
    瞤d4                        d dl mZ d dl mZ d dlZd dlZd dlZd dlZd dlZd dlm	Z	 ddl
mZmZmZ ddlmZ ddlmZ d	d
lT  G d dej                  Zedk    r ej                     dS dS )    )absolute_import)print_functionN)range   )Tree	PhyloTreeTreeNode)	TreeError)NewickError   )*c                       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d 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d Zd ZdS )Test_Coretype_Treez Tests tree basics. c                     d }d }d }d }|                      t          |           |                      t          |           |                      t          |           |                      t          |           d S )Nc                  0    t                      } d| _        d S N1a)r   distts    3lib/python3.11/site-packages/ete3/test/test_tree.py
wrong_distzATest_Coretype_Tree.test_read_write_exceptions.<locals>.wrong_dist   s    AAFFF    c                  0    t                      } d| _        d S r   )r   supportr   s    r   wrong_supportzDTest_Coretype_Tree.test_read_write_exceptions.<locals>.wrong_support   s    AAIIIr   c                  0    t                      } d| _        d S N	Something)r   upr   s    r   wrong_upz?Test_Coretype_Tree.test_read_write_exceptions.<locals>.wrong_up   s    AADDDr   c                  0    t                      } d| _        d S r   )r   childrenr   s    r   wrong_childrenzETest_Coretype_Tree.test_read_write_exceptions.<locals>.wrong_children    s    A$AJJJr   )assertRaisesr
   )selfr   r   r!   r$   s        r   test_read_write_exceptionsz-Test_Coretype_Tree.test_read_write_exceptions   s    	 	 		 	 		 	 		% 	% 	% 	)Z000)]333)X...)^44444r   c                    t                      }|                    dddg           |                    dt          dg                     |                     |j        d           |                     |j        d           |                     |j        dg           |                     |j        t          dg                     |	                    d           | 
                    d|j        v           d S )Nr   1)testf1testf2testf3testf4)r   add_featuresadd_featuresetassertEqualr*   r+   r,   r-   del_feature
assertTruefeaturesr&   r   s     r   test_add_remove_featuresz+Test_Coretype_Tree.test_add_remove_features)   s     FF	aQC888	hQC)))1%%%3'''A3'''3s88,,,	h
233333r   c                    t          dd          5 }|                    t                     ddd           n# 1 swxY w Y   t          d          }|                    d           |                     t          |                    ddg                     |                     t
          |                    d	
                     |                     t          |                    d
                     t          t                    }|                     t          |                    ddg                     |                     t
          |                    d	
                     |                     t          |                    d
                     t          t                    }|                     t          |                                           t          t                    }|                     t          |                    d	
                     t          t                    }|                     t          |                    d	
                     |                     t          d                              d	
          d           |                     t          d                              d	
          d           t          d          }|                     |                    d	dgd          d           t          d          }d}t          d          }t          j        |           |D ]}|dz                      ||           |                     ||                    g                      |                     t                                                                          d                     dS )z Tests newick support z/tmp/etetemptree.nwwNz/tmp/etewritetest.nw)outfileflagmood)r4   	   format   zhola;z(hola);z(((A[&&NHX:name=A],B[&&NHX:name=B])[&&NHX:name=NoName],C[&&NHX:name=C])[&&NHX:name=I],(D[&&NHX:name=D],F[&&NHX:name=F])[&&NHX:name=J])[&&NHX:name=root];nameT)r>   r4   format_root_node
((A,B),C);a"  ((A:1[&&NHX:dist=1.0:name=A:support=1.0],B:1[&&NHX:0=0:1=1:2=2:3=3:4=4:5=5:6=6:7=7:8=8:9=9:a=a:b=b:c=c:d=d:dist=1.0:e=e:f=f:g=g:h=h:i=i:j=j:k=k:l=l:m=m:n=n:name=B:o=o:p=p:q=q:r=r:s=s:support=1.0:t=t:u=u:v=v:w=w])1:1[&&NHX:dist=1.0:name=:support=1.0],C:1[&&NHX:dist=1.0:name=C:support=1.0]);!abcdefghijklmnopqrstuvw0123456789Bz	Tree node)openwritenw_fullr   r1   nw_toponw_distnw2_full
nw_simple5
nw_simple6listrandomshuffler/   r3   __repr__
startswith)r&   OUTr   expected_nwr4   letters         r   test_tree_read_and_writez+Test_Coretype_Tree.test_tree_read_and_write7   s    ',, 	IIg	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 &''	.///!''F6?'"C"CDDD177!7#4#4555!'''"3"3444 MM!''F6?'"C"CDDD!'''"3"3444'177!7#4#4555 NNAGGII... aggQg&7&7888aggQg&7&7888 	g,,A,66AAAi..a.889EEE   l  m  mVHtTT t	u 	u 	u  {;<<x    	2 	2FW!!&&1111aggrg&:&:;;; 	))44[AABBBBBs   8<<c                 ,   t          d          t          d          }|z   }|                                 |                     |                    d          d           t	          d          fd}|                     t          |           d S )N((A, B), C);z((a, b), c);r<   r=   z(((A,B),C),((a,b),c));c                       z   S N )t1t3s   r   <lambda>z6Test_Coretype_Tree.test_concat_trees.<locals>.<lambda>r   s    b2g r   )r   sort_descendantsr1   rF   r   r%   r
   )r&   t2concat_treemixed_typesr[   r\   s       @@r   test_concat_treesz$Test_Coretype_Tree.test_concat_treesk   s    .!!.!!2g$$&&&**!*446NOOO~&&%oooo)[11111r   c                    ddl m}m}  |             t          d          D ]}t	                      }|                    dd           |D ]c}|                     |                    |          t	          |                    |          |                              |                     dt	                      }|                    dd           |                                 d	 d
 |	                    d          D             D             }d d |D             D             }d d |	                    d          D             D             }d d |	                    d          D             D             }	d |D             }
dD ]`}t	          |                    |ddd          |          }|                                 d |D             }|                     ||
           adD ]}}t	          |                    |ddd          |          }|                                 d d |	                    d          D             D             }|                     ||           ~dD ]j}t	          |                    |ddd          |          }|                                 d d |D             D             }|                     ||           kdD ]}}t	          |                    |ddd          |          }|                                 d d |	                    d          D             D             }|                     ||           ~d D ]}}t	          |                    |ddd          |          }|                                 d! d" |	                    d          D             D             }|                     ||	           ~d D ]9}| 
                    t          t          |                    d#          |           :d$D ]v}t	          |                    d%          |          }t          d& |	                                D                       }|                     t          d'g          |           wd(}d D ]%}| 
                    t          t          ||           &d)}d*D ]%}| 
                    t          t          ||           &d)}d*D ]%}| 
                    t          t          ||           &d+}g d,}g d-}|D ]}| 
                    t          t          |                    d.|          d/           |                    d0          s7| 
                    t          t          |                    d1|          d/           |D ]e}t          d2|d3d4g          }|                     t          d5 t	          |                    d.|          d/          D                       |           f| 
                    t          t          d6           | 
                    t          t          g d7           d8S )9z# tests different newick subformats r   )print_supported_formats	NW_FORMAT
      Trandom_branchesr=   2   c                 .    g | ]}t          |d           S    round.0xs     r   
<listcomp>z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s     ]]]aeAqkk]]]r   c                     g | ]	}|j         
S rZ   r   rq   ns     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s    3\3\3\qAF3\3\3\r   	postorderc                 .    g | ]}t          |d           S rl   rn   rp   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s     "L"L"L15A;;"L"L"Lr   c                     g | ]	}|j         
S rZ   ru   rv   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s    8K8K8KA8K8K8Kr   c                 .    g | ]}t          |d           S rl   rn   rp   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s     &y&y&yquQ{{&y&y&yr   c                 D    g | ]}|                                 |j        S rZ   is_leafr   rv   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s,    <x<x<xlmlululwlw<xQV<x<x<xr   c                 .    g | ]}t          |d           S rl   rn   rp   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s     rrrQU1a[[rrrr   c                 D    g | ]}|                                 |j        S rZ   r~   r   rv   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s,    2q2q2qefenenepep2q192q2q2qr   c                     g | ]	}|j         
S rZ   r@   rv   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s    111!qv111r   )	r   r   r      r?   rm         r<   z%0.6f)r>   dist_formattersupport_formatterrA   c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s    000af000r   )r   r   r   r   r?   c                 .    g | ]}t          |d           S rl   rn   rp   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s     !b!b!b!%1++!b!b!br   c                     g | ]	}|j         
S rZ   ru   rv   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s    7a7a7a17a7a7ar   )rg   r   c                 .    g | ]}t          |d           S rl   rn   rp   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s     !L!L!L!%1++!L!L!Lr   c                     g | ]	}|j         
S rZ   ru   rv   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s    7K7K7K17K7K7Kr   rl   c                 .    g | ]}t          |d           S rl   rn   rp   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s     !u!u!u!%1++!u!u!ur   c                 D    g | ]}|                                 |j        S rZ   r}   rv   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s,    7t7t7t1hihqhqhshs7t7t7t7tr   )r   r   c                 .    g | ]}t          |d           S rl   rn   rp   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s      w w wq! w w wr   c                 D    g | ]}|                                 |j        S rZ   r   rv   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s,    6v6v6vQjkjsjsjuju6vqy6v6v6vr   r   )r   r   r   c                     g | ]	}|j         
S rZ   )r   rv   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s    #E#E#E!AI#E#E#Er         ?zQ((A:0.813705,(E:0.545591,D:0.411772)error:0.137245)1.000000:0.976306,C:0.074268);zQ((A:0.813705,(E:0.545error,D:0.411772)1.0:0.137245)1.000000:0.976306,C:0.074268);)r   r   r   z[((NAME1:0.813705,(NAME2:0.545,NAME3:0.411772)NAME6:0.137245)NAME5:0.976306,NAME4:0.074268);)z[name]z[namez"name"z'name'z'namer@   z
[]'"&%$!*.)zerror)z(errorzerro()rz:errorzerror:zerr:orz,errorzerror,NAME2r   ,NAME6NAME1NAME3NAME4c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z:Test_Coretype_Tree.test_newick_formats.<locals>.<listcomp>   s    !b!b!bQ!&!b!b!br   z(((A, B), C)[&&NHX:nameI]);)r   r   r   N)parser.newickrd   re   r   r   populater1   rF   r^   traverser%   	Exceptionr0   r   replacerQ   )r&   rd   re   ir   fexpected_distancesexpected_leaf_distancesexpected_internal_distancesexpected_supportsexpected_leaf_namesr_   observed_namesobserved_distancesobserved_supportsdefault_supports	error_nw1	error_nw2	error_nw3base_nwvalid_nameserror_namesenamevnameexpected_namess                            r   test_newick_formatsz&Test_Coretype_Tree.test_newick_formatsv   sP   FFFFFFFF!!! r 	f 	fAAJJq$J/// f f  !2!2D9J9JRS4T4T4T4Z4Zbc4Z4d4deeeef FF	

2t
,,,	]]3\3\AJJ{D[D[3\3\3\]]]"L"L8K8K8K8K8K"L"L"L&y&y<x<xQZZXcMdMd<x<x<x&y&y&y#rr2q2qajjQ\F]F]2q2q2qrrr11q111 % 	B 	BAaggQwRYlpgqqz{|||B!!!00a000N^-@AAAA  	E 	EAaggQwRYlpgqqz{|||B!!!!b!b7a7aT_H`H`7a7a7a!b!b!b/1CDDDD  	J 	JAaggQwRYlpgqqz{|||B!!!!L!L7K7K7K7K7K!L!L!L/1HIIII  	N 	NAaggQwRYlpgqqz{|||B!!!!u!u7t7tT_H`H`7t7t7t!u!u!u/1LMMMM
  	C 	CAaggQwRYlpgqqz{|||B!!! w w6v6v"++VaJbJb6v6v6v w w w.0ABBBB  	L 	LAiqwwaw/@/@KKKK  	; 	;AaggQg''222B"#E#Er{{}}#E#E#EFFS#ZZ)9:::: h	 	F 	FAk41EEEEg	 	F 	FAk41EEEE h	 	F 	FAk41EEEE p]]]hhh  	` 	`Ek4%1P1PYZ[[[##C(( `!!+tW__We5T5T]^!___  	- 	-E '5'7!CDDNS!b!b$wwPU7V7V_`2a2a2a!b!b!bcc+- - - - 	+t-JKKK+tWWW55555r   c                    ddz  }dz  }||fD ]}|                      t          t          |           |                      t          t          |dd           t          |dd	          }|                     t	          fd
|D                                  |                    dd          }t          |dd	          }|                    dd          }|                     ||           |                     ||           d S )Nz\((A:0.0001[&&NHX:hello=true],B:0.011)90:0.01[&&NHX:hello=true],(C:0.01, D:0.001)hello:0.01);z%(("A:0.1":1,"%s":2)"C:0.00":3,"D":4);z1(("A:\"0.1\"":1,"%s":2)"C:'0.00'":3,"D'sd'''":4);)newickTr   )r   quoted_node_namesr>   r   )r   r>   r   c              3   8   K   | ]}|j         d z  k    |V  dS )z%sNr   )rq   rw   complex_names     r   	<genexpr>z7Test_Coretype_Tree.test_quoted_names.<locals>.<genexpr>   s4      LLa$|:K0K0K0K0K0K0KLLr   )r   r>   )r%   r   r   r3   anyrF   r1   )	r&   nw1nw2nwr   nw_backr_   nw_back2r   s	           @r   test_quoted_namesz$Test_Coretype_Tree.test_quoted_names   s$   u5|CH,V* 
	+ 
	+Bk4;;;k4d[\]]]BqDAAAAOOCLLLL1LLLLLMMMggQg??GRTBBBBxx$qxAAHR)))R****
	+ 
	+r   c                     t          dd          }|                                 ddgddgddgddgd	d
gddgddgddgddgddgg
}|D ]4\  }}|                    |ddd          }|                     ||           5dS )z2 test to change dist, name and support formatters z/((A:1.111111, B:2.222222)C:3.33333, D:4.44444);r   r=   r   z0((TEST-A:1.1,TEST-B:2.2)SUP-1.0:3.3,TEST-D:4.4);z/((TEST-A:1.1,TEST-B:2.2)TEST-C:3.3,TEST-D:4.4);r   r   rg   z%((TEST-A:1.1,TEST-B:2.2),TEST-D:4.4);r?   z)((TEST-A:1.1,TEST-B:2.2):3.3,TEST-D:4.4);rm   z((TEST-A,TEST-B):3.3,TEST-D);r   z+((TEST-A:1.1,TEST-B:2.2)TEST-C,TEST-D:4.4);r   z((TEST-A,TEST-B)TEST-C,TEST-D);r<   z((TEST-A,TEST-B),TEST-D);z%0.1fzTEST-%sz	SUP-%0.1f)r>   r   name_formatterr   N)r   r^   rF   r1   )r&   r   checkr   resultr   s         r   test_custom_formatting_formatsz1Test_Coretype_Tree.test_custom_formatting_formats   s    B1MMM	GHFGGHFG<=@A45BC6701	3  	) 	)IAv')grssBR((((	) 	)r   c                    d}t                      fd}fd}|                     t          |           |                     t          |                               dd          }                    dd          }t	          ddd          }|                    |          }|                    d	d
          }|                    dd          }	|                    d          }
|                    |
          }|                    d          }|	                                }|                    dd          }|                     |	                                           |                     ||
           |                     ||           |                     ||           t          d          
                    d          d         }
                    d          d         }
                    d          d         }
                    d          d         }|                                 |                     |j        d           |                     |v d           |                     |j        |           |                     |j        |           t          d                              d          }dz  }|                    d           |                     |                    d                     t          d                              d          }dz  }|                    d           |                     |                    d          dz              t          d                              d          }dz  }|                    d           |                     |                    d                     t          d          
                    d          d         }
                    d          d         }
                    d          d         }
                    d          d         }|                                 |                     |j        d           |                     |v d           |                     t          d                                  D                       t          g d!                     t          d"          }|                                 |                     |                                d# d$D                        |                    d%           |                     |                                d& d'D                        |                                 |                     |                                d( d)D                        t          d          }|
                    d          d         }|                    dd|g           t*          j                                         |                     t          d* |                                D                       t          g d+                     t          d          }|
                    d          d         }|                    ddg           |                     |	                                d,           t          d-d.          }|                    g d/           |                     t          d0 |                                D                       t          g d1                     t          d-d.          }|                    ddg           |                     t          d2 |                                D                       t          g d3                     t          d-d.          }|                    g d4           |                     t          d5 |                                D                       t          g d6                     t          d-d.          }|                    g d7           |                     t          d8 |                                D                       t          g d9                     dS ):z- tests operations which modify tree topology z-((Hola:1,Turtle:1.3)1:1,(A:0.3,B:2.4)1:0.43);c                  .                                     S rY   )remove_childr   s   r   r]   z;Test_Coretype_Tree.test_tree_manipulation.<locals>.<lambda>  s    annQ&7&7 r   c                  ,                                      S rY   )
add_sisterr   s   r   r]   z;Test_Coretype_Tree.test_tree_manipulation.<locals>.<lambda>  s    ALLNN r   r   )r   r   gQ?Holar@   r   r   Turtlez1.3)r@   r   Az0.3todeleter   rD   g333333@zC(((A, B), C)[&&NHX:name=I], (D, F)[&&NHX:name=J])[&&NHX:name=root];Dr   FJrootNFz"((((A:1,B:1):1,C:1):1,D:1):1,E:1);CTpreserve_branch_length)prevent_nondicotomiczQ(((A, B)[&&NHX:name=H], C)[&&NHX:name=I], (D, F)[&&NHX:name=J])[&&NHX:name=root];c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z=Test_Coretype_Tree.test_tree_manipulation.<locals>.<listcomp>`  s    CCCafCCCr   )r   rD   r   IHz((A,B),(C,D,E,F), (G,H,I));c                     g | ]}|S rZ   rZ   rq   _s     r   rs   z=Test_Coretype_Tree.test_tree_manipulation.<locals>.<listcomp>e      .F.F.FQq.F.F.Fr   	ABGHICDEF)	directionc                     g | ]}|S rZ   rZ   r   s     r   rs   z=Test_Coretype_Tree.test_tree_manipulation.<locals>.<listcomp>g  r   r   	FEDCIHGBAc                     g | ]}|S rZ   rZ   r   s     r   rs   z=Test_Coretype_Tree.test_tree_manipulation.<locals>.<listcomp>i  r   r   	ABCDEFGHIc                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z=Test_Coretype_Tree.test_tree_manipulation.<locals>.<listcomp>p  s    DDDafDDDr   )r   r   r   r   z
(A:1,B:1);z!(((((A,B)C)D,E)F,G)H,(I,J)K)root;r=   )r   rD   r   r   c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z=Test_Coretype_Tree.test_tree_manipulation.<locals>.<listcomp>}      <<<af<<<r   )r   rD   r   r   r   c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z=Test_Coretype_Tree.test_tree_manipulation.<locals>.<listcomp>  r   r   )r   rD   r   )r   rD   r   c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z=Test_Coretype_Tree.test_tree_manipulation.<locals>.<listcomp>  r   r   )r   rD   r   r   )r   rD   r   c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z=Test_Coretype_Tree.test_tree_manipulation.<locals>.<listcomp>  r   r   )r   rD   r   r   r   )r   r%   r
   	add_childr	   r   r   remove_sisterr1   rF   search_nodesdeleter    get_distancedetachr0   iter_descendants	ladderizeget_leaf_namesr^   prunesysstdoutflushr   )r&   nw_treeremove_child_exceptadd_sister_exceptc1c2rw   _nc3c4c5_c5c6_c6c7r   r   r   r   	orig_distr   r[   D1r   s                          @r   test_tree_manipulationz)Test_Coretype_Tree.test_tree_manipulation  s=   A FF77772222)%8999)%6777 [[a[++[[dA[..&q!444\\!__]]u]55\\s\//\\z\**oob!!\\z\**  \\s\--!'')),,,b!!!b!!!Q VWWNNN$$Q'NNN$$Q'NNN$$Q'~~6~**1-	


t$$$a'''t$$$t$$$ 566NN3''	sG	---ANN3$7$7888566NN3''	sG	...ANN3$7$7$9:::566NN3''	sG	e,,,ANN3$7$7888 deeNNN$$Q'NNN$$Q'NNN$$Q'~~6~**1-	


t$$$a'''CCa.@.@.B.BCCCDDSI^I^I^E_E_``` /00
**,,.F.F+.F.F.FGGG
q!!!**,,.F.F+.F.F.FGGG
**,,.F.F+.F.F.FGGG WXX__#_&&q)
#c2
DDb.A.A.C.CDDDEEL]L]L]H^H^___WXX__#_&&q)
#c"((**l333 5a@@@
%%%&&&<<bkkmm<<<==999::	< 	< 	< 5a@@@
#s<<bkkmm<<<==///00	2 	2 	2 5a@@@
!!!<<bkkmm<<<==44455	7 	7 	7 5a@@@
!!!<<bkkmm<<<==999::	< 	< 	< 	< 	<r   c           
         t          d          D ].}t                                          dd                                           }i }                                D ]A}                                D ]*}t          |                    |          d          |||f<   +Bt          t          j	        
                                d                    }                    |d           |D ]L\  }}||v rC||v r?|                     |||f         t          |                    |          d                     M0t          d          D ]F}t          dd	          }|                                 |                                }|
                                }	|                    d           |d
z                      d           |dz                      d           |dz                      d           |                    |	           |                                 |                     ||                                           |                     t          |                                          t          |	          dz  dz
             Ht                      d}
                    d           t          j	        
                                |
          }                    |           |                     t                    |
           |                     t                                                    |
dz  dz
             t                                          dd           
                                }d}
t          j	        
                                |
          }fdt!          j        ||          D             }                    |d           fdt!          j        ||          D             }|                     ||           |                     t                                                    |
dz  dz
             d S )Nrf   (   Trh   rm   r   z(((A,B)1, C)2,(D,E)3)root;r   r=   r)   r   2r?   3r     d   rj   c                 H    g | ]\  }}d                      ||          z  S z%fr   rq   abr   s      r   rs   z4Test_Coretype_Tree.test_pruninig.<locals>.<listcomp>  s0    ]]]%1Q41---]]]r   c                 H    g | ]\  }}d                      ||          z  S r  r  r  s      r   rs   z4Test_Coretype_Tree.test_pruninig.<locals>.<listcomp>  s0    \\\%1Q41---\\\r   )r   r   r   rF   iter_leavesro   r   r0   rN   sample
get_leavesr   r1   r^   lenget_descendants	itertoolsproduct)r&   r   orig_nw	distancesr  r  to_keeprr   t_fuzzy	ref_nodessample_sizer  orig_leavesmatrix1matrix2r   s                  @r   test_pruninigz Test_Coretype_Tree.test_pruninig  s   r 	T 	TAAJJr4J000ggiiGI]]__ C C C CA',Q^^A->->'B'BIqe$$C &-::;;GGGGDG999  T T!<<ALL$$Y!u%5uQ^^A=N=NPQ7R7RSSST
 r 	T 	TA7BBBG$$&&&mmooG**,,IR   S[""1%%%S[""1%%%S[""1%%%MM)$$$$$&&&Wgmmoo666S!8!8!:!:;;c)nnQ>NPQ=QSSSS FF	

4q||~~{;;	Q---Q..0011KM13DFFF FF	

3
---llnnallnnk::]]]]9;LVU[;\;\]]]	t444\\\\):KFTZ:[:[\\\'***Q..0011KM13DFFFFFr   c                    t          d          }|                                 |                                 |                     |                    d          d           t          d          }|                                 |                                 |                     |                    d          d           d S )Nz((a,a,a,a), (b,b,b,(c,c,c)));r<   r=   z&((a,(a,(a,a))),(b,(b,(b,(c,(c,c))))));z!((((a,a,a,a))), (b,b,b,(c,c,c)));)r   resolve_polytomyr   r1   rF   standardizer5   s     r   test_resolve_polytomiesz*Test_Coretype_Tree.test_resolve_polytomies  s    011		**,TUUU455		**,TUUUUUr   c           
      6
   t          dd          |                                                     g                                d          d         }                    d          d         }                    d          d         }d	z  }|                     d|j                   fd
}|                     t          |           |                     d|                    |          j                   |                     d|                    |g          j                   |                     d                    ||          j                   |                     d|                    ||          j                   |                     |                    |dg                     |                     d	|	                                j                   |                     d	|	                                j                   |                     d	|	                                j                   |                    |          }|                     d	|	                                j                   | 
                    |	                                                                           | 
                    |                                            | 
                    |                                           | 
                    |	                                                                            |                     t          |j        t                                                     ddgd          \  }}dz  }dz  }	|t          ||||	g          |t          ||	|g          i}
|                     ||	           |                     |                                |
                                           |                                D ]^}|                     t          t!          ||         d                     t          t!          |
|         d                                _|                    |          }|                     ||           |                    d          }|                     ||           |                    dd          \  }}|                     ||           |                     |i            d S )Nz>(((A,B)N1,C)N2[&&NHX:tag=common],D)[&&NHX:tag=root:name=root];r   r=   r   r   r   rD   r   r   c                       dz  S )NnoffoundrZ   r   s   r   r]   z:Test_Coretype_Tree.test_common_ancestors.<locals>.<lambda>  s    : r   commonr   T)get_pathN1N2c                     | j         S rY   r   rr   s    r   r]   z:Test_Coretype_Tree.test_common_ancestors.<locals>.<lambda>  s     r   )keyc                     | j         S rY   r   r3  s    r   r]   z:Test_Coretype_Tree.test_common_ancestors.<locals>.<lambda>  s     r   )r   r1   get_sistersr   r@   r%   r
   get_common_ancestortagget_tree_rootr3   is_rootr~   r0   keysrM   sortedassertDictEqual)r&   r   rD   r   r   test_not_foundr.  pathr0  r1  expected_pathkr   s               @r   test_common_ancestorsz(Test_Coretype_Tree.test_common_ancestors  s    QZ[\\\"---NNN$$Q'NNN$$Q'NNN$$Q'&af%%%----)^4441#8#8#;#;#?@@@1#8#8!#=#=#ABBB1#8#8A#>#>#BCCC1#8#8A#>#>#BCCCq44aX>>???!2!2!6777!2!2!6777!2!2!6777&&q))!5!5!7!7!;<<<,,..6688999AIIKK(((		$$$AOO--55777888)Q%:DFFCCC ,,c3Z$,GGXXCD"b 122AsAr4=7I7IJ$$$m&8&8&:&:;;; 	S 	SAT&a6F6F"G"G"GHH!&q)9?O?O"P"P"PQQS S S S &&q))###&&s++###,,S4,@@###T2&&&&&r   c           	      	   t          dd          }d |dz                                  D             }|                     |g d           d |dz                                  D             }|                     |g d	           t          t                    }|                     t	          |          d
           |                     d|v            |                     |j        d         |v            |D ]}|                     |j                   t          t                    }t	          |          }|	                    d           |                     t	          |          |dz              t          d          D ]i}t                      }|	                    dd           |                     t	          t          |                                                    d           jt          d          }|                    d          d         }t          t                    }|                     |                                d |                                D                        |                     |                                d |                                D                        |                     |                                d |                                D                        |                     t          d |                    d          D                       t          d |                    d          D                                  |                     |t          d |                    d          D                       v            t          dd          }d}d}d }	|                     |d!                    d" |                    d          D                                  |                     |d!                    d# |                    d          D                                  |                     |	d!                    d$ |                    d%          D                                  |                                }
|                                 |
                                 |                     |
|                                           d S )&Nz(((((a,b)A,c)B,d)C,e)D,f)root;r   r=   c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z9Test_Coretype_Tree.test_getters_iters.<locals>.<listcomp>      BBBQ!&BBBr   r  )r   rD   r   r   r   c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z9Test_Coretype_Tree.test_getters_iters.<locals>.<listcomp>  rE  r   rD   )r   r   r      
Ddi0002240r      rf   r  Freuse_namesz0(((A,B),C)[&&NHX:tag=common],D)[&&NHX:tag=root];r   r   c                     g | ]}|S rZ   rZ   rq   r@   s     r   rs   z9Test_Coretype_Tree.test_getters_iters.<locals>.<listcomp>0  s    -T-T-Ttd-T-T-Tr   c                     g | ]}|S rZ   rZ   rM  s     r   rs   z9Test_Coretype_Tree.test_getters_iters.<locals>.<listcomp>1  s    )L)L)L4$)L)L)Lr   c                     g | ]}|S rZ   rZ   rv   s     r   rs   z9Test_Coretype_Tree.test_getters_iters.<locals>.<listcomp>2  s    .P.P.PQq.P.P.Pr   c                     g | ]}|S rZ   rZ   rv   s     r   rs   z9Test_Coretype_Tree.test_getters_iters.<locals>.<listcomp>4  s    @@@Aa@@@r   preorderc                     g | ]}|S rZ   rZ   rv   s     r   rs   z9Test_Coretype_Tree.test_getters_iters.<locals>.<listcomp>5  s    !E!E!E!!E!E!Er   rx   c                     g | ]}|S rZ   rZ   rv   s     r   rs   z9Test_Coretype_Tree.test_getters_iters.<locals>.<listcomp>6  s    !D!D!D!!D!D!Dr   z((3,4)2,(6,7)5)1;342675112345671253467 c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z9Test_Coretype_Tree.test_getters_iters.<locals>.<listcomp>D  s    "J"J"Ja16"J"J"Jr   c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z9Test_Coretype_Tree.test_getters_iters.<locals>.<listcomp>G  s    !J!J!JQ!&!J!J!Jr   c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z9Test_Coretype_Tree.test_getters_iters.<locals>.<listcomp>J  s    !K!K!KQ!&!K!K!Kr   
levelorder)r   get_ancestorsr1   nw_dfltr  r3   r#   r@   rG   r   r   r0   r   r   rJ   iter_leaf_namesr  r  r  r   r   joinget_childrenswap_childrenreverse)r&   r   ancestor_namesr  	prev_sizer   r   rx   rQ  r[  rw   s              r   test_getters_itersz%Test_Coretype_Tree.test_getters_iters  s    1!<<<BB1S5*?*?*A*ABBB)E)E)EFFFBB1S5*?*?*A*ABBB);););<<< MMQ$$$)***
1*+++ 	$ 	$AOOAF#### MMq66		

2Q2...r 	@ 	@AAJJsJ...SQ%5%5%7%7!8!8993???? CDDNNN$$Q' NN))++-T-T@Q@Q@S@S-T-T-TUUU)L)LAMMOO)L)L)LMMM**,,.P.P1;M;M;O;O.P.P.PQQQ@@J)?)?@@@AA !E!EQZZ-D-D!E!E!EFF	H 	H 	HS!D!DQZZ
-C-C!D!D!DEEEFFF $Q///
 	
''"J"J1::j3I3I"J"J"JKK	M 	M 	M 	!J!J!**[2I2I!J!J!JKK	M 	M 	M 	!K!K!**\2J2J!K!K!KLL	N 	N 	N NN				ANN,,-----r   c                 
   t          d          }|                    d          d         }|                    d          d         }|                    d          d         }|                    d          d         }|                    d          d         }|                    d	          d         }|                    d
          d         }|                     |                    |          j        d           |                     |                    |          j        d
           |                     |                    |          d           |                     |                    |          d           |                     |                    |          d           |                     |                    |          d           |                     |                    |          |                    |                     |                     |                    ||          |                    |                     |                     |                    ||          |                    |                     |                     |                                |df           |                     |                                |df           |                     |                                |df           |                     |                                |df           |                     |                                |df           t          d          }|                     |                                |dz  df           |                     |                                |dz  df           |                     |                    d          |dz  df           |                     |                    d          |dz  df           |                     |                    |          d           |                     |                    |d          d           |                     |                    |dz  d          d           |                     |dz                      d          |dz  df           |                     |dz                      d          |dz  df           d S )Nzo(((A:0.1, B:0.01):0.001, C:0.0001):1.0[&&NHX:name=I], (D:0.00001):0.000001[&&NHX:name=J]):2.0[&&NHX:name=root];r   r   r   rD   r   r   r   r   r   gB`"۹?g)\(?gV-?        gص?g}>ʈ ?z8(((A:0.5, B:1.0):1.0, C:5.0):1, (D:10.0, F:1.0):2.0):20;g      @g      (@T)topology_onlyg       @r   r   g      @Fg      &@)	r   r   r1   r7  r@   r   get_farthest_leafget_farthest_nodeget_closest_leaf)	r&   r   r   rD   r   r   r   r   r   s	            r   test_distancesz!Test_Coretype_Tree.test_distancesS  s      C  D  DNNN$$Q'NNN$$Q'NNN$$Q'NNN$$Q'NNN$$Q'NNN$$Q'~~6~**1-..q116<<<..q116???**E222**D111**A...**A...--t/@/@/C/CDDD400$2C2CA2F2FGGGa00!..2F2FGGG 	//11Ae9>>>//11Ae9>>>,,..C999,,..H>>>,,..H>>> KLL++--#s|<<<,,..3>>>,,4,@@1S5#,OOO++$+??!C%NNN**C000>>DDD#TBBCHHH!C%222FF3PSUUU!C%222GG!C%QUWWWWWr   c                 8   t          t                    }|                    d          d         }|                    d          d         }|                    |          }|                                }|                    |                                           |j        d         |j        d         }}|                                }|                    |          }	| 	                    ||	           t          d          D ]}
t          d          D ]2}t          j        |d          d         }|                    |           3|                    |                                           | 	                    t          |j        d         |j        d         g          t          ||g                     |                    |          }| 	                    ||           t          dd          }|                                 |                                }|                    |                    d	d
                     |                                 |                                 | 	                    ||                                           t          dd          }|                    |                                           | 	                    |j        d         j        d           | 	                    |j        d         j        d           d S )NYGR028Wr   YGR138Cr   rf   r  z(A,B,(C,D)E)root;r=   r   r   z(A:10,B:1,(C:1,D:1)E:1)root;g      @)r   rJ   get_leaves_by_namer   r  set_outgroupget_midpoint_outgroupr#   rF   r1   r   rN   r  r0   r^   r7  unrootr   )r&   r   rn  ro  d1nodeso1o2nw_originald2r   jrw   d3nw_unrooteds                  r   test_rootingzTest_Coretype_Tree.test_rooting  s   NN&&y11!4&&y11!4!!'**!!##	q..00111A
1Bggii!!'**R    r 	Q 	QA4[[ " "M%++A.q!!!!NN12244555S!*Q-A!?@@#r2h--PPPP !!'**R   $Q///	ggii	q,,S#66777	


	aggii000/:::	q..00111A+S111A+S11111r   c                    t          d          }t          d          }|                    d           |                     t                    5  |                    d           d d d            n# 1 swxY w Y   |                    d           |                     d|                                           |                     d|                                           d S )Nz3(('a':0.5, 'b':0.5):0.5, ('c':0.2, 'd':0.2):0.8):1;keep)modenewlegacyz)(('c':0.2,'d':0.2)1:1.3,'a':0.5,'b':0.5);z)(('c':0.2,'d':0.2)1:0.8,'a':0.5,'b':0.5);)r   rs  r%   
ValueErrorr1   rF   )r&   r   r_   s      r   test_unrootzTest_Coretype_Tree.test_unroot  s   FHHGII	fz** 	! 	!HH%H   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!
		x	   DaggiiPPPDbhhjjQQQQQs   A22A69A6c                 0   t          dd          }d |                    d          D             }d |                    d          D             }d |                    d	          D             }|                     |g d
           |                     |g d           |                     |g d           d |dz                                  D             }|                     |g d           |                     |                                g            d }|                    |          }|                     t          d |D                       t          d                     t                      }|                    d           |                                }|                    d          }	|                     ||         t          |                                                     |                     |	|         t          |                                                     |                    d          }
|                    dd          }|                     |
|         t          |                                                     |                     ||         t          d |                                D                                  |                    g d          }|                    g dd          }|                     ||         t          d |                                D                                  |                     ||         t          d |                                D                                  d S )Nz(((A, B)H, C)I, (D, F)J)root;r   r=   c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z;Test_Coretype_Tree.test_tree_navigation.<locals>.<listcomp>      ===QV===r   rx   c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z;Test_Coretype_Tree.test_tree_navigation.<locals>.<listcomp>  s    ;;;qAF;;;r   rQ  c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z;Test_Coretype_Tree.test_tree_navigation.<locals>.<listcomp>  s    ???af???r   r[  )	r   rD   r   r   r   r   r   r   r   )	r   r   r   r   rD   r   r   r   r   )	r   r   r   r   r   r   r   r   rD   c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z;Test_Coretype_Tree.test_tree_navigation.<locals>.<listcomp>  r  r   rD   )r   r   r   c                 .    | j         t          d          v S )NJCH)r@   r0   r3  s    r   r]   z9Test_Coretype_Tree.test_tree_navigation.<locals>.<lambda>  s    #e** 4 r   )
is_leaf_fnc                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z;Test_Coretype_Tree.test_tree_navigation.<locals>.<listcomp>  r   r   JHCrG  F)leaves_onlyr@   )
store_attr)r  r  c                     g | ]	}|j         
S rZ   r   rv   s     r   rs   z;Test_Coretype_Tree.test_tree_navigation.<locals>.<listcomp>  s    >\>\>\!qv>\>\>\r   r   c                 6    g | ]}|j         |j        |j        fS rZ   r   )rq   leafs     r   rs   z;Test_Coretype_Tree.test_tree_navigation.<locals>.<listcomp>  s&    ,m,m,mVZdiDL-Q,m,m,mr   c                 6    g | ]}|j         |j        |j        fS rZ   r   rv   s     r   rs   z;Test_Coretype_Tree.test_tree_navigation.<locals>.<listcomp>  s&    0c0c0cQR!&!&!)1L0c0c0cr   )	r   r   r1   r\  r  r0   r   get_cached_contentr   )r&   r   rx   rQ  r[  	ancestorscustom_testcustom_leaves
cache_nodecache_node_leaves_only_false
cache_namecache_name_leaves_only_false
cache_manycache_many_lofs                 r   test_tree_navigationz'Test_Coretype_Tree.test_tree_navigation  sj   0;;;==QZZ%<%<===	;;AJJz$:$:;;;??ajj&>&>???
$T$T$TUUU#S#S#STTT%U%U%UVVV==ae%:%:%<%<===	$6$6$6777**B/// 54<<<<m<<<==s5zzJJJ FF	

2))++
'(';';';'N'N$AALLNN(;(;<<<5a8#ajjll:K:KLLL))V)<<
'(';';v[`';'a'a$AA,<,<,>,>(?(?@@@5a8#>\>\qzz||>\>\>\:]:]^^^))5P5P5P)QQ
--9T9T9Tbg-hhA,m,m^_^j^j^l^l,m,m,m(n(nooo*C0c0cVWV`V`VbVb0c0c0c,d,deeeeer   c                    t          dd          }|                    |dz             t          dd          }|                    |dz             d}t                      }|                    |d           |                                 |                                D ]6}||ur0t          j                    |_        t          j                    |_        7|j        D ]	}d	|_        
|	                                }t          |                                          }i }i }|                                D ]}t          |                                          }||z
  }	d
                    t          |                    }
d
                    t          |	                    }|j        ||
<   |j        ||<   |j        ||
<   |j        ||<   t          d          D ]h}t          j        |                                d          d         }|                    |           |                                D ]}t          |                                          }||z
  }	d
                    t          |                    }
d
                    t          |	                    }|                     |                    |
d          |j                   |                     |                    |d          |j                   |j        r;|j        j        r/|                     |                    |
d          |j                   jt                      }|                    d           |                                 |                                }t                                                       t          d                                           t          d                                           dS )z2 Check branch support and distances after rooting z((((a,b)1,c)2,i)3,(e,d)4)5;r   r=   r  z(((a,b)2,c)x)9;#   FrJ  g+?r   r  r   NrG  z(a,b,c);z
(a,(b,c));)r   rq  r   rs  r   rN   r   r   r#   copyr0   r   r   r_  r<  r   r  r  r1   getr    	get_asciidescribe)r&   r   SIZErw   r_   namescluster_id2supportcluster_id2distcluster_namescluster_names2
cluster_idcluster_id2r   outgrouptexts                  r   r}  zTest_Coretype_Tree.test_rooting  s    .q999	qu "1---	qu FF	

4U
+++	


##%% 	) 	)Azz"MOO	 	 	AAIIVVXXA$$&&'' 		2 		2A 0 0 2 233M"]2N&"7"788J((6.#9#9::K-.Yz*./i{+*+&OJ'+,6OK(( s 	T 	TA}R%7%7%9%91==a@HOOH%%%[[]] T T #A$4$4$6$6 7 7!&!6 XXf]&;&;<<
!hhvn'='=>>  !3!7!7
D!I!I19UUU  !3!7!7T!J!JAIVVV4 TADG T$$_%8%8T%J%JAFSSST FF	

2	


 {{}}Z!!###\##%%%%%r   c                 l   t                      }|                    dd           |                                }|                                }t	          d          D ]V}t          j        |d          D ]>}|                                 |                     |                                |           ?Wd S )Nrj   Trh   rG  rf   )	r   r   get_topology_idr  r   rN   r  ra  r1   )r&   r   orig_idru  r   rw   s         r   test_treeidzTest_Coretype_Tree.test_treeid  s    FF	

2t
,,,##%%!!##r 	? 	?A]5"-- ? ?!!!  !2!2!4!4g>>>>?	? 	?r   c                    t                                          dd                               dd           |                     t	          fdD                       t	          dg                     t                                          dd                               dd           |                     t	          fdD                       t	          dg                     t                                          dd                               dd           |                     t	          fd	D                       t	          dg                     d S )
Nr  Trh   balancedc                 V    g | ]%}t                              |          d           &S rl   ro   r   rq   rw   r   s     r   rs   z7Test_Coretype_Tree.test_ultrametric.<locals>.<listcomp>,  /    EEEaeANN1$5$5q99EEEr   g      Y@fixedc                 V    g | ]%}t                              |          d           &S rl   r  r  s     r   rs   z7Test_Coretype_Tree.test_ultrametric.<locals>.<listcomp>1  r  r   c                 V    g | ]%}t                              |          d           &S rl   r  r  s     r   rs   z7Test_Coretype_Tree.test_ultrametric.<locals>.<listcomp>6  r  r   )r   r   convert_to_ultrametricr1   r0   r5   s    @r   test_ultrametricz#Test_Coretype_Tree.test_ultrametric$  s[   
 VV	

3
---	  j111EEEE1EEEFFUGUUUVV	

3
---	  g...EEEE1EEEFFUGUUUVV	

3
---	  j111EEEE1EEEFFUGUUUUUr   c                    t          d          }t          d          }t          d          }||fD ]}|                    |d          d           t          d          }t          d          }t          d	          }t          d
          }|||fD ] }|                    |dd          d          !t          d          }t          d          }t          d          }	t          d          }
t          d          }||	|
|fD ]}|                    |d          d           t          d          }t          d          }|fD ] }|                    |dd          d          !d S )N6((a:1, (b:1, (c:1, d:1):1):1), (e:1, (f:1, g:1):1):1);z4((a:1, (b:1, c:1, d:1):1):1, (e:1, (f:1, g:1):1):1);0((a:1, (b:1, c:1, d:1):1):1, (e:1, f:1, g:1):1);Texpand_polytomiesr   %((g, h), (a, (b, (c, (d,( e, f))))));((a, b, c, (d, e, f)), (g, h));((a, b, c, d, e, f), (g, h));!((a, b, (c, d, (e, f))), (g, h));r   r  polytomy_size_limitz!((g, h), (a, b, (c, d, (e, f))));z((a, b, (c, d, e, f)), (g, h));z!((a, (b, (c, d, e, f))), (g, h));z((d, b, c, (a, e, f)), (g, h));z#((g, h), ((a, b), (c, d), (e, f)));z%((g, h), ((a, c), ((b, d), (e, f))));)r   robinson_foulds)r&   gtreeref1ref2refref3ref4ref5ref6ref7ref8ref9ref10s                r   test_expand_polytomies_rfz,Test_Coretype_Tree.test_expand_polytomies_rf9  s   MNNJKKFGG$< 	B 	BC!!#!>>qAAA <==566344788$% 	Y 	YC!!#ST!UUVWXXX 899566788566566$d+ 	B 	BC!!#!>>qAAA :;;<==7 	Y 	YC!!#ST!UUVWXXX	Y 	Yr   c           
      |   d }t          d          }t          d          }t          d          }t          d          }|                      ||                    |d                    d           t          d	          }|                      ||                    |d                    d
           t          d	          }|                      ||                    |d                    d
           |                      ||                    |                    d           |                      ||                    |d                    d           |                      ||                    |dd                    d           |                      ||                    |ddd                    d           |                      ||                    |d                    d           |                      ||                    |dd                    d           |                      ||                    |d                    d           |                      ||                    |dd                    d           t          d          }|                      ||                    |                    d           |                      ||                    |d                    d           |                      ||                    |d                    d           |                      ||                    |dd                    d           t          d           }|                      ||                    |                    d!           d S )"Nc                 B     g d}t           fd|D                       S )N)norm_rfrfmax_rfref_edges_in_sourcesource_edges_in_refeffective_tree_sizesource_subtreestreeko_distc                      g | ]
}|         S rZ   rZ   )rq   vds     r   rs   zJTest_Coretype_Tree.test_tree_compare.<locals>._astuple.<locals>.<listcomp>g  s    1111!A$111r   )tuple)r  keynamess   ` r   _astuplez6Test_Coretype_Tree.test_tree_compare.<locals>._astuple_  s<     Z  Z  ZH 1111111222r   z/((((A, B)0.91, (C, D))0.9, (E,F)0.96), (G, H));z%(((A, B)0.91, (C, D))0.9, (E,F)0.96);z#(((A, B)0.9, (C, D))0.9, (E,F)0.9);rW   Tunrooted)NAr  rg  r   r   r   r   r  z(A, B);)r  r  rg  r  r  r   r   r  F)rg  rg  r   r   r   rm   r   r  )rg  rg  rm   r   r   rm   r   r  gGz?)min_support_sourcemin_support_ref)rg  rg  r   r   r   rm   r   r  )r  r  r  )r  )rg  rg  r?         ?r   rm   r   r  )r  r  )rg  rg  rg         ?r   rm   r   r  )r  )rg  rg  r?   r   r  rm   r   r  )r  r  )rg  rg  rg   r   r  rm   r   r  z%(((A, E)0.9, (C, D))0.98, (B,F)0.95);)r  rm   r   r  r  rm   r   r  )gUUUUUU?rg   rm   r  r  rm   r   r  gffffff?)gm۶m?r?   r   r  gUUUUUU?rm   r   r  )g333333?r   r?   r  g۶m۶m?rm   r   r  z%(((A, C)0.9, (E, D))0.98, (B,F)0.95);)r   r   r   rg  rg  rm   r   r  )r   r1   compare)r&   r  r  r  s1smalls2s3s           r   test_tree_comparez$Test_Coretype_Tree.test_tree_compare^  s%   	3 	3 	3 EFF;<<788 ^$$%--t-"D"DEE@	B 	B 	B Y%--t-"D"DEEB	D 	D 	D Y%--u-"E"EFFB	D 	D 	D 	"**T"2"233<	> 	> 	> 	"**TD*"A"ABB<	> 	> 	>
 	"**Td\_*"`"`aa<	> 	> 	> 	"**Td\_jn*"o"opp<	> 	> 	> 	"**Td*"K"KLL=	? 	? 	? 	"**TdUY*"Z"Z[[=	? 	? 	? 	"**T4*"H"HII=	? 	? 	? 	"**T4RV*"W"WXX=	? 	? 	?
 9::"**T"2"233=	? 	? 	? 	"**TD*"A"ABB=	? 	? 	? 	"**Td*"K"KLL=	? 	? 	? 	"**TdUY*"Z"Z[[=	? 	? 	?
 9::"**T"2"233:	< 	< 	< 	< 	<r   c                    g g dg dg dg dg dg dg dg dg d	g d
g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d"g d#g d$g d%g d&g d'g d(g d)g d*g d+g d,g d-g d.g d/g d0g d1g d2g d3g d4g d5g d6g d7g d8g d9g d:g d;g d<g d=g d>g d?g d@g dAg dBg dCg dDg dEg dFg dGg dHg dIg dJg dKg dLg dMg dNg dOg dPg dQg dRg dSg dTg dUg dVg dWg dXg dYg dZg d[g d\g d]g d^g d_g d`g dag dbg dcg dd}t          de          }t          df          }|                     t          |j        |g           |                     t          |j        |dhdhi           |                     t          |j        |dhdhdhj           |                     t          |j        |dhdhk           |                     t          |j        t          dl          dhm           t          dn          }|                     t          |j        |g           |                     t          |j        |g           |D ]\  }}}}t          |          }t          |          }|                    ||o          \  }	}
}}}}}|sdpndq}|                     t          |          dr           |                     |
|           |                     |	|           |                    ||s          }|                     dr|dt                    |                     |
|du                    |                     ||dv                    t          j        dw |	                                D             dx          D ]}|
                    dx           |                    ||s          }|                     dr|dt                    |                     |
|du                    |                     ||dv                    t          dy          }t          dz          }|                    |dh{          }|                     |dt         d|           |                     |d}         d~           |                     |d         d~           |                     |dv         d~           |                     |du         d           |                     |d         d           t          d          }t          d          }|                    |          \  }	}}}}}}|                     |	d           |                    |dh          \  }	}}}}}}|                     |	d           t          d          }t          d          }t          d          }t          d          }|                    |          \  }	}}}}}}|                     |	d|           |                    |dh          \  }	}}}}}}|                     |	d           |                    |          \  }	}}}}}}|                     |	d           |                    |dhd          \  }	}}}}}}|                     |	d           |                    |          \  }	}}}}}}|                     |	d           |                    |dh          \  }	}}}}}}|                     |	d           t          d          }t          d          }|                    |dh          \  }	}}}}}}|                     |	d           |D ]\  }}}}dD ]<}|                    |d|d|d          }|                    |d|d|d          }=t          |          }t          |          }|                    ||o          \  }	}
}}}}}|                     t          |          dr           |sdpndq}|                     |
|           |                     |	|           |D ]C\  }}}}dD ]B}|                    |d|d|d|d          }|                    |d|d|d|d          }Ct          |          }t          |          }|                    ||dd          \  }	}
}}}}}|                     t          |          d           |sdnd}|                     |
|           |                     |	|           |                    ||d~d          \  }	}
}}}}}|                     t          |          d           |sdnd}|                     |
|           |                     |	|           |                    ||dd~          \  }	}
}}}}}|                     t          |          d           |sdnd}|                     |
|           |                     |	|           |                    ||dd          \  }	}
}}}}}|                     t          |          d           |sdnd}|                     |
|           |                     |	|           Ed S )N)   TzL(((z,y),(x,(w,v))),(u,t),((s,r),((q,(p,o)),((n,(m,(l,(k,j)))),(i,(h,g))))));zL(((k,(j,(i,(h,g)))),z),(y,x),((w,v),((u,(t,(s,(r,q)))),(p,(o,(n,(m,l)))))));)r  FzN(((t,s),((r,(q,p)),(o,n))),(((m,(l,(k,j))),(i,(h,g))),(z,(y,(x,(w,(v,u)))))));zN((((k,(j,i)),((h,g),z)),((y,(x,w)),((v,(u,t)),(s,(r,(q,p)))))),((o,n),(m,l)));)   TzL(((v,(u,(t,s))),((r,(q,(p,o))),((n,m),(l,k)))),(j,(i,(h,g))),(z,(y,(x,w))));zL(((z,(y,(x,w))),(v,(u,(t,s)))),((r,(q,p)),(o,(n,m))),((l,(k,(j,i))),(h,g)));)   TzL(((l,k),(j,i)),((h,g),(z,(y,(x,w)))),((v,(u,(t,(s,(r,q))))),((p,o),(n,m))));zL(((p,o),((n,(m,l)),(k,j))),((i,(h,g)),(z,y)),((x,(w,v)),((u,(t,s)),(r,q))));)   TzL(((o,(n,m)),(l,(k,(j,(i,(h,g)))))),(z,(y,x)),((w,v),((u,(t,(s,r))),(q,p))));zL(((t,(s,(r,(q,(p,o))))),(n,m)),((l,k),(j,(i,(h,g)))),((z,y),((x,w),(v,u))));)r  TzL(((y,(x,(w,v))),(u,t)),((s,(r,(q,(p,o)))),(n,m)),((l,k),((j,(i,(h,g))),z)));zL(((z,(y,(x,w))),(v,(u,t))),(s,(r,(q,(p,(o,(n,(m,(l,k)))))))),(j,(i,(h,g))));)r  FzN(((p,(o,(n,(m,l)))),((k,(j,i)),(h,g))),((z,y),((x,(w,(v,u))),(t,(s,(r,q))))));zN((((t,(s,r)),(q,p)),((o,n),(m,(l,(k,(j,i)))))),(((h,g),(z,(y,(x,w)))),(v,u)));)r  TzL((((i,(h,g)),z),(y,x)),((w,v),((u,(t,(s,r))),(q,p))),((o,n),(m,(l,(k,j)))));zL((((h,g),z),(y,x)),(w,(v,u)),((t,s),((r,(q,p)),((o,(n,m)),(l,(k,(j,i)))))));)r  TzL(((x,(w,(v,(u,(t,(s,(r,(q,(p,o))))))))),((n,(m,l)),(k,(j,i)))),(h,g),(z,y));zL(((u,t),(s,r)),((q,p),(o,(n,m))),(((l,(k,(j,i))),((h,g),(z,(y,x)))),(w,v)));)   FzN(((x,(w,(v,u))),((t,(s,r)),(q,p))),((o,(n,(m,l))),((k,j),((i,(h,g)),(z,y)))));zN(((z,(y,(x,(w,(v,u))))),(t,(s,r))),((q,(p,(o,(n,m)))),((l,k),(j,(i,(h,g))))));)r  TzL((z,(y,(x,w))),(v,(u,(t,s))),((r,(q,(p,(o,(n,m))))),((l,k),(j,(i,(h,g))))));zL(((v,(u,t)),((s,r),((q,(p,o)),(n,(m,l))))),((k,j),((i,(h,g)),z)),(y,(x,w)));)"   FzN((((i,(h,g)),(z,(y,x))),(w,v)),((u,t),((s,r),((q,(p,(o,n))),(m,(l,(k,j)))))));zN(((p,(o,(n,(m,(l,k))))),((j,i),(h,g))),(z,(y,(x,(w,(v,(u,(t,(s,(r,q))))))))));)   FzN(((i,(h,g)),(z,y)),((x,w),((v,(u,(t,(s,(r,q))))),(p,(o,(n,(m,(l,(k,j)))))))));zN((((l,k),(j,(i,(h,g)))),(z,(y,(x,w)))),((v,u),((t,s),((r,(q,p)),(o,(n,m))))));)r  FzN(((v,(u,t)),((s,(r,q)),((p,o),((n,m),((l,k),(j,i)))))),((h,g),(z,(y,(x,w)))));zN(((y,(x,(w,v))),(u,(t,s))),(((r,q),((p,o),(n,(m,(l,k))))),((j,i),((h,g),z))));)rG  FzN(((u,(t,s)),(r,q)),(((p,o),((n,m),((l,k),((j,i),((h,g),z))))),(y,(x,(w,v)))));zN((((u,t),(s,r)),(((q,p),(o,(n,m))),(((l,k),(j,i)),((h,g),z)))),((y,x),(w,v)));)rG  TzL(((y,x),(w,v)),((u,(t,s)),((r,q),(p,(o,(n,(m,(l,k))))))),((j,(i,(h,g))),z));zL(((r,q),((p,o),(n,(m,(l,(k,j)))))),((i,(h,g)),(z,(y,(x,(w,v))))),(u,(t,s)));)r  TzL((((k,(j,i)),(h,g)),((z,(y,(x,w))),((v,(u,t)),(s,r)))),(q,(p,(o,n))),(m,l));zL((((s,r),((q,p),(o,(n,m)))),((l,k),((j,i),((h,g),z)))),(y,x),(w,(v,(u,t))));)r  TzL((w,(v,(u,(t,s)))),(r,q),((p,(o,n)),((m,(l,k)),((j,(i,(h,g))),(z,(y,x))))));zL(((y,x),((w,v),(u,(t,s)))),((r,(q,(p,(o,n)))),(m,l)),((k,j),((i,(h,g)),z)));)r  TzL(((j,(i,(h,g))),(z,(y,(x,(w,(v,(u,t))))))),(s,r),((q,p),((o,(n,m)),(l,k))));zL(((s,(r,(q,(p,(o,(n,(m,l))))))),(k,j)),((i,(h,g)),(z,y)),((x,(w,v)),(u,t)));)r  TzL((((r,(q,(p,(o,n)))),((m,l),(k,(j,i)))),((h,g),z)),(y,(x,(w,v))),(u,(t,s)));zL(((u,t),(s,r)),((q,p),(o,(n,(m,(l,(k,j)))))),(((i,(h,g)),(z,(y,x))),(w,v)));)r  FzN((((m,(l,k)),(j,i)),(((h,g),(z,y)),(x,w))),((v,u),(t,(s,(r,(q,(p,(o,n))))))));zN(((u,t),((s,(r,q)),(p,(o,(n,(m,(l,k))))))),((j,(i,(h,g))),(z,(y,(x,(w,v))))));)r  FzN(((k,(j,i)),(h,g)),((z,(y,x)),((w,(v,(u,(t,(s,r))))),((q,(p,(o,n))),(m,l)))));zN(((w,(v,u)),((t,(s,r)),((q,p),((o,(n,(m,l))),((k,(j,i)),((h,g),z)))))),(y,x));)r  FzN(((x,(w,(v,(u,(t,s))))),(r,q)),((p,(o,(n,(m,l)))),((k,j),((i,(h,g)),(z,y)))));zN(((o,(n,m)),(l,(k,j))),(((i,(h,g)),(z,y)),((x,w),((v,u),((t,(s,r)),(q,p))))));)r  TzL(((x,(w,v)),(u,(t,s))),((r,(q,(p,(o,(n,m))))),(l,(k,(j,(i,(h,g)))))),(z,y));zL((((i,(h,g)),(z,(y,x))),((w,v),((u,t),(s,(r,(q,p)))))),(o,n),((m,l),(k,j)));)rG  FzN((((m,l),(k,(j,(i,(h,g))))),(z,y)),((x,(w,(v,(u,(t,s))))),(r,(q,(p,(o,n))))));zN((((m,l),((k,(j,i)),(h,g))),(z,(y,(x,(w,v))))),((u,t),(s,(r,(q,(p,(o,n)))))));)r  TzL(((o,(n,(m,(l,k)))),(j,i)),((h,g),(z,y)),((x,(w,(v,(u,(t,s))))),(r,(q,p))));zL((((t,(s,(r,(q,(p,(o,n)))))),(m,(l,k))),((j,i),(h,g))),(z,(y,x)),(w,(v,u)));)r  FzN((((p,o),((n,m),((l,k),(j,i)))),((h,g),(z,y))),((x,(w,(v,u))),((t,s),(r,q))));zN((((v,(u,(t,s))),(r,q)),((p,o),((n,m),(l,k)))),(((j,i),(h,g)),(z,(y,(x,w)))));)r  FzN((((r,(q,(p,(o,n)))),(m,(l,k))),(((j,i),(h,g)),((z,y),(x,w)))),((v,u),(t,s)));zN((((k,j),((i,(h,g)),(z,y))),(x,w)),(((v,(u,t)),(s,r)),((q,p),((o,n),(m,l)))));)rG  TzL((((q,(p,o)),(n,m)),((l,k),((j,i),(h,g)))),(z,(y,x)),((w,v),(u,(t,(s,r)))));zL((((l,(k,(j,i))),(h,g)),((z,y),(x,(w,v)))),(u,t),((s,(r,(q,(p,o)))),(n,m)));)r  FzN(((t,(s,r)),(q,(p,o))),(((n,(m,(l,k))),(j,(i,(h,g)))),((z,y),(x,(w,(v,u))))));zN(((w,(v,u)),(t,s)),(((r,(q,p)),(o,n)),(((m,l),((k,j),((i,(h,g)),z))),(y,x))));)r  TzL((((h,g),(z,y)),((x,(w,(v,u))),(t,(s,(r,q))))),(p,o),((n,m),((l,k),(j,i))));zL(((t,s),((r,(q,p)),((o,(n,(m,l))),((k,j),(i,(h,g)))))),(z,y),(x,(w,(v,u))));)rG  TzL(((p,o),(n,(m,(l,(k,(j,i)))))),((h,g),z),((y,(x,w)),((v,u),(t,(s,(r,q))))));zL(((y,(x,w)),(v,(u,t))),((s,r),(q,p)),((o,(n,m)),((l,(k,(j,i))),((h,g),z))));)    TzL((((s,(r,q)),((p,(o,n)),(m,(l,k)))),((j,(i,(h,g))),(z,y))),(x,w),(v,(u,t)));zL(((u,(t,(s,r))),((q,(p,o)),((n,(m,l)),(k,(j,i))))),((h,g),(z,(y,x))),(w,v));)r  TzL(((z,(y,x)),(w,(v,(u,t)))),(s,(r,(q,(p,(o,n))))),((m,l),(k,(j,(i,(h,g))))));zL(((u,t),((s,r),((q,p),((o,n),((m,(l,k)),((j,i),((h,g),z))))))),(y,x),(w,v));)rf   TzL(((p,o),((n,m),((l,(k,(j,i))),((h,g),(z,y))))),(x,(w,(v,u))),((t,s),(r,q)));zL((((n,m),((l,(k,(j,i))),((h,g),(z,y)))),(x,w)),(v,(u,(t,(s,(r,q))))),(p,o));)r  TzL((((h,g),z),((y,x),((w,v),(u,t)))),(s,r),((q,p),((o,n),((m,l),(k,(j,i))))));zL((((v,(u,(t,(s,r)))),(q,(p,o))),((n,m),((l,k),(j,(i,(h,g)))))),(z,y),(x,w));)r  FzN(((q,(p,o)),((n,m),((l,(k,(j,(i,(h,g))))),(z,y)))),((x,(w,v)),(u,(t,(s,r)))));zN((((t,s),((r,q),((p,o),(n,m)))),((l,k),(j,i))),(((h,g),z),((y,(x,w)),(v,u))));)r  FzN(((p,o),(n,m)),(((l,(k,(j,i))),(h,g)),((z,y),((x,w),((v,u),(t,(s,(r,q))))))));zN((x,(w,v)),((u,(t,(s,(r,q)))),((p,(o,(n,(m,(l,(k,(j,(i,(h,g))))))))),(z,y))));)r  FzN(((z,y),((x,w),((v,u),(t,s)))),((r,(q,(p,(o,(n,m))))),((l,k),((j,i),(h,g)))));zN((((s,(r,q)),((p,o),((n,(m,l)),(k,(j,(i,(h,g))))))),(z,y)),((x,w),(v,(u,t))));)r  FzN((((o,n),((m,l),((k,(j,i)),(h,g)))),(z,(y,x))),((w,(v,(u,(t,(s,r))))),(q,p)));zN(((q,(p,(o,(n,m)))),((l,(k,j)),(i,(h,g)))),(z,(y,(x,(w,(v,(u,(t,(s,r)))))))));)r  TzL(((p,(o,(n,m))),((l,k),((j,i),((h,g),(z,y))))),(x,w),((v,u),((t,s),(r,q))));zL(((u,(t,(s,(r,(q,(p,(o,(n,m)))))))),((l,k),((j,i),((h,g),(z,(y,x)))))),w,v);)r  FzN((((r,q),((p,o),(n,(m,l)))),((k,(j,i)),(h,g))),((z,y),((x,(w,v)),(u,(t,s)))));zN(((h,g),z),((y,x),((w,v),((u,t),((s,(r,(q,(p,(o,(n,m)))))),(l,(k,(j,i))))))));)r  TzL((((h,g),z),((y,(x,(w,(v,u)))),((t,s),((r,(q,(p,o))),(n,m))))),(l,k),(j,i));zL((((o,n),((m,(l,(k,j))),((i,(h,g)),z))),(y,(x,(w,v)))),(u,(t,s)),(r,(q,p)));)r  TzL(((v,u),(t,(s,(r,(q,p))))),((o,(n,m)),((l,(k,j)),((i,(h,g)),z))),(y,(x,w)));zL((((m,(l,k)),((j,i),(h,g))),(z,y)),(x,w),((v,(u,(t,(s,(r,q))))),(p,(o,n))));)r  TzL(((q,p),((o,(n,(m,l))),(k,(j,i)))),((h,g),z),((y,x),((w,(v,(u,t))),(s,r))));zL((((j,(i,(h,g))),(z,(y,x))),((w,v),(u,t))),(s,(r,q)),((p,o),(n,(m,(l,k)))));)rG  FzN((((o,(n,m)),((l,k),((j,i),((h,g),z)))),(y,x)),(((w,v),(u,t)),((s,r),(q,p))));zN((((j,i),((h,g),z)),((y,x),(w,(v,(u,(t,(s,r))))))),((q,p),((o,n),(m,(l,k)))));)r  FzN(((x,w),(v,(u,(t,(s,(r,(q,(p,(o,(n,m)))))))))),((l,k),((j,(i,(h,g))),(z,y))));zN(((m,l),((k,(j,(i,(h,g)))),z)),((y,(x,(w,(v,(u,t))))),((s,r),((q,p),(o,n)))));)r  TzL((((y,x),(w,v)),((u,(t,(s,r))),(q,(p,o)))),((n,m),(l,(k,j))),((i,(h,g)),z));zL(((m,l),(k,(j,i))),((h,g),z),((y,(x,w)),((v,u),((t,s),(r,(q,(p,(o,n))))))));)r  TzL(((v,u),((t,(s,(r,(q,p)))),((o,n),((m,l),(k,(j,(i,(h,g)))))))),(z,y),(x,w));zL((((n,m),((l,k),((j,i),((h,g),(z,(y,(x,(w,(v,u))))))))),(t,s)),(r,q),(p,o));)r  FzN(((r,(q,p)),(o,n)),(((m,(l,k)),(j,i)),(((h,g),(z,y)),((x,w),((v,u),(t,s))))));zN(((y,x),((w,v),(u,(t,(s,r))))),(((q,(p,(o,n))),(m,l)),((k,(j,(i,(h,g)))),z)));)rG  TzL(((w,v),((u,(t,(s,r))),((q,p),((o,(n,(m,l))),((k,j),((i,(h,g)),z)))))),y,x);zL(((w,v),((u,t),(s,(r,q)))),((p,o),((n,(m,l)),(k,j))),((i,(h,g)),(z,(y,x))));)r  FzN(((x,(w,v)),((u,(t,s)),(r,q))),(((p,o),((n,(m,l)),(k,j))),((i,(h,g)),(z,y))));zN((((i,(h,g)),z),((y,x),(w,v))),((u,(t,s)),((r,(q,(p,(o,(n,m))))),(l,(k,j)))));)r  FzN((((k,(j,(i,(h,g)))),(z,(y,x))),((w,v),(u,t))),((s,(r,(q,(p,o)))),(n,(m,l))));zN(((w,v),(u,(t,(s,(r,(q,(p,o))))))),(((n,m),((l,(k,(j,i))),((h,g),z))),(y,x)));)r  TzL(((x,w),((v,u),((t,s),(r,(q,p))))),((o,n),(m,l)),((k,(j,i)),((h,g),(z,y))));zL((((p,o),(n,m)),((l,(k,(j,i))),((h,g),z))),(y,(x,(w,v))),((u,t),(s,(r,q))));)r  FzN(((q,p),((o,(n,(m,l))),((k,(j,(i,(h,g)))),z))),((y,x),((w,(v,u)),(t,(s,r)))));zN((((m,(l,k)),((j,(i,(h,g))),z)),(y,(x,w))),((v,(u,(t,(s,(r,q))))),(p,(o,n))));)r  FzN(((y,x),((w,(v,(u,(t,(s,r))))),(q,p))),((o,(n,(m,(l,(k,(j,i)))))),((h,g),z)));zN((((t,(s,(r,q))),((p,(o,(n,(m,l)))),((k,(j,i)),(h,g)))),(z,y)),((x,w),(v,u)));)rG  FzN(((u,(t,s)),(r,(q,(p,(o,(n,(m,(l,(k,j))))))))),(((i,(h,g)),z),(y,(x,(w,v)))));zN(((o,n),(m,(l,(k,j)))),(((i,(h,g)),(z,y)),((x,(w,v)),((u,(t,(s,r))),(q,p)))));)r  FzN(((t,s),((r,(q,(p,(o,n)))),(m,(l,k)))),(((j,i),((h,g),z)),((y,(x,w)),(v,u))));zN(((r,(q,(p,o))),((n,(m,(l,k))),((j,i),(h,g)))),((z,(y,(x,(w,v)))),(u,(t,s))));)r  TzL((((r,q),((p,(o,(n,(m,l)))),((k,(j,i)),(h,g)))),(z,(y,(x,w)))),(v,u),(t,s));zL(((x,(w,(v,(u,(t,s))))),(r,(q,(p,o)))),(n,m),((l,k),((j,(i,(h,g))),(z,y))));)r  FzN(((t,s),((r,(q,p)),((o,n),(m,(l,(k,(j,i))))))),(((h,g),(z,y)),(x,(w,(v,u)))));zN((((h,g),(z,(y,(x,(w,v))))),(u,(t,(s,r)))),((q,(p,(o,(n,m)))),(l,(k,(j,i)))));)r  TzL((((q,(p,o)),((n,m),((l,(k,(j,i))),(h,g)))),(z,(y,x))),(w,v),(u,(t,(s,r))));zL(((y,x),(w,(v,u))),((t,(s,r)),((q,p),(o,n))),((m,(l,k)),((j,(i,(h,g))),z)));)r  FzN((((q,(p,(o,n))),((m,(l,k)),((j,(i,(h,g))),z))),(y,x)),((w,(v,(u,t))),(s,r)));zN(((z,(y,x)),(w,v)),(((u,t),((s,(r,(q,p))),((o,n),(m,l)))),((k,(j,i)),(h,g))));)r  TzL(((x,w),((v,(u,(t,s))),(r,q))),((p,(o,n)),((m,(l,k)),(j,(i,(h,g))))),(z,y));zL((((j,(i,(h,g))),(z,(y,x))),(w,(v,u))),((t,s),((r,q),(p,o))),((n,m),(l,k)));)r  FzN((((n,(m,l)),(k,j)),(((i,(h,g)),(z,y)),((x,w),((v,u),(t,s))))),((r,q),(p,o)));zN(((v,u),(t,s)),(((r,(q,(p,(o,n)))),((m,(l,k)),(j,i))),((h,g),(z,(y,(x,w))))));)r  FzN((((n,(m,(l,(k,j)))),((i,(h,g)),z)),(y,x)),((w,v),((u,(t,(s,r))),(q,(p,o)))));zN((((v,u),(t,(s,(r,(q,p))))),((o,(n,(m,(l,k)))),(j,(i,(h,g))))),((z,y),(x,w)));)rG  FzN((((q,(p,(o,n))),(m,l)),((k,(j,(i,(h,g)))),z)),((y,(x,(w,(v,(u,t))))),(s,r)));zN(((w,(v,(u,t))),(s,r)),(((q,p),(o,n)),(((m,l),(k,(j,i))),((h,g),(z,(y,x))))));)rG  TzL(((z,(y,(x,w))),(v,u)),((t,(s,r)),(q,(p,o))),((n,(m,l)),((k,(j,i)),(h,g))));zL((((q,(p,(o,n))),(m,l)),((k,j),(i,(h,g)))),(z,y),((x,w),((v,u),(t,(s,r)))));)r  FzN(((w,(v,(u,(t,(s,(r,q)))))),(p,o)),(((n,m),(l,(k,j))),((i,(h,g)),(z,(y,x)))));zN(((y,(x,(w,(v,u)))),(t,(s,r))),(((q,(p,(o,(n,(m,(l,k)))))),(j,i)),((h,g),z)));)r  FzN(((y,x),(w,(v,(u,t)))),(((s,r),((q,(p,o)),(n,(m,l)))),((k,(j,(i,(h,g)))),z)));zN(((s,(r,(q,(p,o)))),(n,m)),(((l,k),((j,i),((h,g),(z,(y,(x,w)))))),(v,(u,t))));)r  FzN(((v,(u,t)),((s,r),((q,p),((o,(n,(m,(l,k)))),(j,i))))),(((h,g),z),(y,(x,w))));zN(((y,(x,(w,v))),((u,(t,s)),(r,(q,(p,o))))),((n,(m,l)),((k,(j,i)),((h,g),z))));)r  FzN(((y,x),(w,v)),(((u,t),((s,(r,(q,p))),(o,n))),((m,(l,k)),((j,i),((h,g),z)))));zN((((s,(r,q)),((p,(o,n)),((m,l),(k,(j,i))))),((h,g),z)),((y,(x,w)),(v,(u,t))));)r  TzL(((w,v),(u,t)),((s,r),((q,p),((o,(n,m)),((l,k),((j,i),(h,g)))))),(z,(y,x)));zL(((z,y),(x,(w,(v,u)))),(t,(s,r)),((q,(p,o)),((n,m),((l,(k,(j,i))),(h,g)))));)r  FzN(((y,x),(w,(v,(u,t)))),(((s,(r,q)),((p,o),(n,(m,(l,k))))),((j,i),((h,g),z))));zN((((i,(h,g)),(z,(y,x))),((w,(v,u)),(t,s))),((r,q),((p,o),((n,m),(l,(k,j))))));)r  FzN(((v,(u,(t,s))),(r,(q,p))),(((o,n),((m,(l,(k,j))),((i,(h,g)),(z,y)))),(x,w)));zN(((q,p),((o,n),((m,l),((k,j),((i,(h,g)),z))))),(y,(x,(w,(v,(u,(t,(s,r))))))));)r  TzL(((t,(s,(r,q))),((p,o),((n,(m,l)),((k,j),((i,(h,g)),z))))),(y,x),(w,(v,u)));zL(((z,y),(x,w)),(v,u),((t,(s,r)),((q,(p,(o,(n,(m,l))))),((k,(j,i)),(h,g)))));)r  TzL(((w,(v,(u,(t,(s,r))))),(q,p)),((o,(n,m)),((l,k),(j,i))),(((h,g),z),(y,x)));zL((((p,o),(n,(m,(l,(k,(j,(i,(h,g)))))))),(z,(y,x))),(w,(v,u)),((t,s),(r,q)));)r  TzL((((i,(h,g)),(z,y)),(x,w)),((v,u),((t,(s,r)),(q,p))),((o,n),(m,(l,(k,j)))));zL(((l,k),((j,i),((h,g),(z,y)))),(x,w),((v,u),((t,s),((r,(q,(p,o))),(n,m)))));)r  FzN(((x,w),((v,(u,(t,s))),((r,(q,p)),((o,(n,(m,(l,k)))),((j,i),(h,g)))))),(z,y));zN(((p,(o,(n,m))),(l,k)),(((j,i),(h,g)),((z,y),((x,(w,v)),((u,t),(s,(r,q)))))));)r  TzL(((x,w),((v,(u,t)),(s,r))),((q,p),(o,(n,(m,(l,k))))),((j,i),((h,g),(z,y))));zL(((h,g),(z,y)),(x,(w,(v,u))),((t,(s,r)),(q,(p,(o,(n,(m,(l,(k,(j,i))))))))));)r  TzL(((y,x),(w,v)),((u,t),((s,r),((q,p),((o,n),(m,(l,k)))))),((j,(i,(h,g))),z));zL((((r,(q,p)),(o,(n,(m,(l,(k,(j,(i,(h,g))))))))),(z,y)),(x,(w,v)),(u,(t,s)));)r  FzN(((y,(x,(w,v))),((u,t),((s,(r,q)),((p,(o,n)),((m,l),(k,(j,i))))))),((h,g),z));zN(((v,u),(t,(s,(r,(q,(p,(o,n))))))),(((m,l),((k,j),((i,(h,g)),z))),(y,(x,w))));)r  TzL((((h,g),z),((y,x),((w,(v,u)),((t,(s,(r,q))),(p,(o,n)))))),(m,(l,k)),(j,i));zL((z,y),(x,(w,(v,(u,t)))),((s,r),((q,p),((o,n),((m,(l,k)),(j,(i,(h,g))))))));)r  TzL(((u,t),(s,r)),((q,p),((o,n),((m,(l,(k,(j,(i,(h,g)))))),z))),(y,(x,(w,v))));zL((((j,(i,(h,g))),z),(y,x)),(w,(v,(u,t))),((s,(r,(q,p))),((o,(n,m)),(l,k))));)r  TzL(((t,(s,r)),((q,p),((o,n),(m,(l,(k,j)))))),((i,(h,g)),z),((y,x),(w,(v,u))));zL((((w,(v,(u,t))),(s,(r,q))),((p,(o,(n,m))),(l,k))),((j,i),(h,g)),(z,(y,x)));)r  FzN((((x,(w,v)),(u,t)),((s,(r,q)),(p,o))),(((n,m),((l,k),((j,i),(h,g)))),(z,y)));zN((r,q),((p,(o,n)),((m,(l,(k,(j,i)))),((h,g),(z,(y,(x,(w,(v,(u,(t,s)))))))))));)r  TzL((((k,j),((i,(h,g)),(z,(y,x)))),(w,v)),(u,t),((s,(r,q)),(p,(o,(n,(m,l))))));zL(((z,y),(x,w)),(v,(u,(t,(s,(r,q))))),((p,o),((n,(m,(l,(k,(j,i))))),(h,g))));)r  TzL(((t,s),((r,(q,(p,o))),(n,m))),((l,(k,j)),((i,(h,g)),(z,y))),((x,w),(v,u)));zL((((l,k),(j,i)),(((h,g),(z,y)),(x,w))),((v,u),(t,s)),((r,q),((p,o),(n,m))));)r  TzL(((h,g),z),(y,(x,w)),((v,(u,(t,s))),((r,(q,p)),((o,(n,(m,l))),(k,(j,i))))));zL(((s,r),(q,p)),((o,n),(m,l)),(((k,j),((i,(h,g)),(z,(y,x)))),(w,(v,(u,t)))));)r  TzL(((x,w),((v,(u,(t,(s,(r,(q,(p,(o,n)))))))),((m,(l,k)),((j,i),(h,g))))),z,y);zL((((h,g),z),(y,x)),((w,v),((u,(t,s)),(r,q))),((p,(o,(n,(m,l)))),(k,(j,i))));)r  FzN(((v,(u,(t,(s,(r,q))))),((p,(o,(n,m))),((l,(k,(j,i))),(h,g)))),((z,y),(x,w)));zN(((v,u),((t,(s,(r,(q,(p,o))))),(n,(m,(l,(k,j)))))),((i,(h,g)),(z,(y,(x,w)))));)r  TzL(((z,y),((x,(w,v)),((u,(t,(s,r))),(q,(p,o))))),(n,m),((l,k),(j,(i,(h,g)))));zL(((r,q),(p,(o,(n,m)))),((l,(k,(j,(i,(h,g))))),(z,y)),((x,w),(v,(u,(t,s)))));)r  TzL(((x,w),((v,(u,(t,(s,r)))),(q,p))),((o,n),(m,l)),((k,j),((i,(h,g)),(z,y))));zL((((p,o),((n,(m,(l,k))),((j,i),(h,g)))),((z,y),(x,(w,v)))),(u,t),(s,(r,q)));)r  FzN(((r,(q,p)),(o,(n,m))),(((l,(k,(j,i))),(h,g)),((z,(y,(x,(w,(v,u))))),(t,s))));zN((((j,(i,(h,g))),(z,y)),(x,(w,(v,(u,t))))),(((s,r),(q,(p,o))),((n,m),(l,k))));)r  FzN((((q,p),((o,(n,(m,(l,k)))),((j,(i,(h,g))),(z,y)))),(x,w)),((v,u),(t,(s,r))));zN((((o,(n,m)),((l,(k,(j,i))),((h,g),z))),(y,x)),((w,v),((u,t),((s,r),(q,p)))));)r  FzN((((s,r),((q,(p,o)),(n,(m,l)))),((k,(j,i)),(h,g))),((z,(y,x)),(w,(v,(u,t)))));zN(((m,l),(k,j)),(((i,(h,g)),z),((y,x),((w,(v,(u,(t,(s,r))))),((q,p),(o,n))))));)rG  TzL((((z,y),(x,(w,(v,u)))),((t,s),(r,q))),((p,o),(n,(m,l))),((k,(j,i)),(h,g)));zL(((j,i),(h,g)),(z,(y,x)),((w,(v,u)),((t,(s,(r,q))),((p,o),((n,m),(l,k))))));)rG  FzN(((v,u),((t,s),(r,q))),(((p,o),(n,(m,l))),(((k,(j,i)),((h,g),z)),(y,(x,w)))));zN((((s,(r,q)),(p,o)),(((n,(m,l)),(k,(j,i))),((h,g),z))),((y,x),((w,v),(u,t))));)r  TzL((z,y),(x,w),((v,u),((t,(s,(r,q))),((p,(o,(n,m))),(l,(k,(j,(i,(h,g)))))))));zL((((r,q),((p,o),((n,m),((l,k),(j,i))))),((h,g),(z,(y,x)))),(w,v),(u,(t,s)));)r  FzN((((k,(j,(i,(h,g)))),(z,y)),(x,(w,v))),(((u,t),(s,(r,q))),((p,o),(n,(m,l)))));zN(((w,v),(u,(t,s))),(((r,(q,(p,o))),((n,m),(l,(k,(j,(i,(h,g))))))),(z,(y,x))));)r  TzL((((n,m),((l,(k,j)),(i,(h,g)))),(z,y)),(x,(w,v)),((u,(t,(s,(r,q)))),(p,o)));zL(((r,q),(p,o)),((n,(m,l)),((k,j),((i,(h,g)),z))),((y,x),(w,(v,(u,(t,s))))));z(a,b,(c,d,e));z((a,b),(c,d,e));)r_   T)r_   unrooted_treesr  )r_   r  r  correct_by_polytomy_size)r_   r  r   z(a, (b,c,d,e,f,g,h));)r_   r  z(a, (b, (c, c)));)r  $   r  rG  r  r  r  r  c                 :    g | ]}|                                 |S rZ   )r~   rv   s     r   rs   z5Test_Coretype_Tree.test_tree_diff.<locals>.<listcomp>N  s*    (\(\(\qPQPYPYP[P[(\(\(\(\r   r?   z1((((A,B),C), ((A,B),C)), (((A,B),C), ((A,B),C)));rB   )has_duplicationsr   r  rg  r  r   r  rg   r  r  r  r   r  r  r  r  rm   r  z2((a:1, (b:1, c:1, d:1):1), (e:1, (f:1, g:1):1):1);clanger(r   z1)z2)jlnqrz,(z1, z11)0.6)z11)0.5)g?)r  min_support_t1min_support_t2r  8   6   gRQ?3   1   gQ?.   ,   )r   r%   r
   r  r1   r  r  rN   r  r  r   r   r   )r&   samplesr[   r_   r\   RFr  r   r   r  rf_maxr  r1r2rt  ry  real_maxcomptargetr   r  r  r  r  r  r  r  rr   s                               r   test_tree_diffz!Test_Coretype_Tree.test_tree_diff  s   dt 	s  	s  	sdt 	x  	x  	xdt 	s  	s  	sdt 	s  	s  	s	dt
 	s  	s  	sdt 	s  	s  	sdt 	x  	x  	xdt 	s  	s  	sdt 	s  	s  	sdt 	x  	x  	xdt 	s  	s  	sdt 	x  	x  	xdt 	x  	x  	xdt 	x  	x  	xdt 	x  	x  	xdt  	s  	s  	s!dt" 	s  	s  	s#dt$ 	s  	s  	s%dt& 	s  	s  	s'dt( 	s  	s  	s)dt* 	x  	x  	x+dt, 	x  	x  	x-dt. 	x  	x  	x/dt0 	s  	s  	s1dt2 	x  	x  	x3dt4 	s  	s  	s5dt6 	x  	x  	x7dt8 	x  	x  	x9dt: 	s  	s  	s;dt< 	x  	x  	x=dt> 	s  	s  	s?dt@ 	s  	s  	sAdtB 	s  	s  	sCdtD 	s  	s  	sEdtF 	s  	s  	sGdtH 	s  	s  	sIdtJ 	x  	x  	xKdtL 	x  	x  	xMdtN 	x  	x  	xOdtP 	x  	x  	xQdtR 	s  	s  	sSdtT 	x  	x  	xUdtV 	s  	s  	sWdtX 	s  	s  	sYdtZ 	s  	s  	s[dt\ 	x  	x  	x]dt^ 	x  	x  	x_dt` 	s  	s  	sadtb 	s  	s  	scdtd 	x  	x  	xedtf 	s  	s  	sgdth 	x  	x  	xidtj 	x  	x  	xkdtl 	s  	s  	smdtn 	x  	x  	xodtp 	x  	x  	xqdtr 	x  	x  	xsdtt 	x  	x  	xudtv 	s  	s  	swdtx 	x  	x  	xydtz 	s  	s  	s{dt| 	x  	x  	x}dt~ 	s  	s  	sdt@ 	x  	x  	xAdtB 	x  	x  	xCdtD 	x  	x  	xEdtF 	s  	s  	sGdtH 	x  	x  	xIdtJ 	x  	x  	xKdtL 	x  	x  	xMdtN 	x  	x  	xOdtP 	s  	s  	sQdtR 	x  	x  	xSdtT 	x  	x  	xUdtV 	s  	s  	sWdtX 	s  	s  	sYdtZ 	s  	s  	s[dt\ 	x  	x  	x]dt^ 	s  	s  	s_dt` 	s  	s  	sadtb 	x  	x  	xcdtd 	s  	s  	sedtf 	s  	s  	sgdth 	s  	s  	sidtj 	x  	x  	xkdtl 	s  	s  	smdtn 	s  	s  	sodtp 	s  	s  	sqdtr 	s  	s  	ssdtt 	x  	x  	xudtv 	s  	s  	swdtx 	s  	s  	sydtz 	x  	x  	x{dt| 	x  	x  	x}dt~ 	x  	x  	xdt@ 	s  	s  	sAdtB 	x  	x  	xCdtD 	s  	s  	sEdtF 	x  	x  	xGdtH 	s  	s  	sIdtN "##$%%)R%7B??? 	)R%7B)- 	 	G 	G 	G 	)R%7B)-37 	 	9 	9 	9
 	)R%7B)- 	 	N 	N 	N 	)R%7DAX<Y<Y,0 	 	2 	2 	2 %&&)R%7B???)R%7B???
 '. 	- 	-"B#scBcB020B0B2V^0B0_0_-Br2r2)1AzzzHSZZ,,,VX...R$$$::b8:44DR&;!<===VT(^444Rd,,, -(\(\B4F4F4H4H(\(\(\^_`` # #""""::b8:44DR&;!<===VT(^444Rd,,,, IJJ<  yyty44 	34a888m,c222i#...dS)))h+++/0!444 FGGMNN -2,A,A$,G,G)FE2r2rQ,1,A,A$Z^,A,_,_)FE2r2rQ <==566344788,1,A,A$,G,G)FE2r2rQ,1,A,A$Z^,A,_,_)FE2r2rQ,1,A,A$,G,G)FE2r2rQ,1,A,A$Z^VW -B -Y -Y)FE2r2rQ,1,A,A$,G,G)FE2r2rQ,1,A,A$Z^,A,_,_)FE2r2rQ DEEFGG,.,>,>rUY,>,Z,Z)FE2r2rQ '. 	% 	%"B#s : :kk!!!!!QQQ%799kk!!!!!QQQ%799cBcB020B0B2V^0B0_0_-Br2r2SZZ,,,)1AzzzHVX...R$$$$ '. "	% "	%"B#s H Hkk!!QQQ111%EGGkk!!QQQ111%EGGcBcB020B0B2V^TWjm 1C 1o 1o-Br2r2SZZ,,,)1AzzzHVX...R$$$020B0B2V^TWjn 1C 1p 1p-Br2r2SZZ,,,-5H~~=HVX...R$$$020B0B2V^TXkn 1C 1p 1p-Br2r2SZZ,,,-5H~~=HVX...R$$$ 130B0B2V^TXko 1C 1q 1q-Br2r2SZZ,,,.6JNHVX...R$$$$E"	% "	%r   c                 ,   t          d          }|                    g dd          \  }}}|                     |d           |                     |d           |                    g dd          \  }}}|                     |d           |                     |d	           |                    d
dgd          \  }}}|                     |d           |                     |d           t          d          }|                    t	          dg          dd          \  }}}|                     |d           |                     |t	                                 t          d          }|                    t	          dg          dd          \  }}}|                     |d           |                     |t	          |dz  g                     t          d          }|                    t	          dg          dd          \  }}}|                     |d           |                     |t	                                 t          d          }|                    t	          ddg          dd          \  }}}|                     |d           |                     |t	                                 t          d          }|                    t	          ddg          dd          \  }}}|                     |d           |                     |t	          |dz  g                     t          d          }|                    t	          ddg          dd          \  }}}|                     |d           |                     |t	                                 t          d          }|                    t	          dg          dd          \  }}}|                     |d           |                     |t	                                 t          d          }|                    t	          dg          dd          \  }}}|                     |d           |                     |t	          |dz  g                     t                      }|                    d           |                    g d          }|                                }t	                      }|D ]g}	|                    t	          |                                          dd          \  }
}}|	                    |
           |
                    |	           h|                     t          |          dg           t          dd           }d!d"d#d$d%d"d#d&d!d#d'
}|D ]1}|                    |                    |j        d(          )           2t	          |d*z  |d+z  g          }|                    d"d#gd,          }|                     t	          |          |           d S )-Nz)((((((a, e), i), o),h), u), ((f, g), j));)r  er   our@   )valuestarget_attrFpolyphyletic)r  r  r   r  Tmonophyleticr   r  paraphyleticz%(aaa1, (aaa3, (aaa4, (bbb1, bbb2))));aaaspecies)r  r  r  z%(aaa1, (bbb3, (aaa4, (bbb1, bbb2))));bbb3bbbz%(aaa1, (aaa3, (aaa4, (bbb1, ccc2))));cccz%(aaa1, (aaa3, (bbb4, (bbb1, bbb2))));bbb4bbb2bbb1z#(aaa1, aaa3, (aaa4, (bbb1, bbb2)));z#(aaa1, bbb3, (aaa4, (bbb1, bbb2)));r  )
aaaaaaaaaa
aaaaaaaaab
aaaaaaaaacz5((((((4, e), i)M1, o),h), u), ((3, 4), (i, june))M2);r   r=   redgreenyellowblackpurplewhite)
r  r  r   r  r  4r  r)   5junenone)colorM1M2r6  )r   check_monophylyr1   r   r0   r   r7  r  r   addrq  rM   r.   r  r@   get_monophyletic)r&   r   is_monomonotypeextramontypeancestor	all_nodesresultsrr   monopartcolorsr  green_yellow_nodes
mono_nodess                   r   test_monophylyz!Test_Coretype_Tree.test_monophyly  s$   =>>$%$5$5=V=V=Vdj$5$k$k 5%(((>222"#"3"3;O;O;O]c"3"d"d 5$'''>222$%$5$5c3ZU[$5$\$\ 5%(((>222 =>>"#"3"33w<<U^im"3"n"n%$'''&&&=>>"#"3"33w<<U^im"3"n"n%%(((QvXJ000=>>"#"3"33w<<U^im"3"n"n%$'''&&&=>>"#"3"33u~;N;N\ept"3"u"u%$'''&&&=>>"#"3"33?O;P;P^dos"3"t"t%%(((QvXJ000=>>"#"3"33?O;P;P^dos"3"t"t%$'''&&&;<<"#"3"33w<<U^im"3"n"n%$'''&&&;<<"#"3"33w<<U^im"3"n"n%%(((QvXJ000 KK	

3(()S)S)STT%%''	 %% 	 	A ! 1 1X=T=T=V=V9W9Wekvz 1 { {D$KKNN1g/// IRSTTTh8G!# #  	C 	CDFJJty&$A$ABBBB !D&!D&!122''/BPW'XX
Z*<=====r   c                 |   t          dd          }|dz                      d           |dz                      ddgdd	gdd
gddgg           |                    d          }|                    d          }|                    d          }d |dz  _        |                    d          }|                     |dz  j        d           |                     |dz  j        d           |                     |dz  j        d         ddg           |                     |dz                                  d           d S )Nz5((A, B)Internal_1:0.7, (C, D)Internal_2:0.5)root:1.3;r   r=   r   zcustom Value)labelr   r   r      )complexr   znewick-extendedcpicklec                      dS )NYESrZ   rZ   r   r   r]   z.Test_Coretype_Tree.test_copy.<locals>.<lambda>!  s    5 r   deepcopyr   rO  )r   r.   r  testfnr1   r@   rJ  rL  )r&   r   t_nwt_nwxt_pklt_deeps         r   	test_copyzTest_Coretype_Tree.test_copy  sF   HQRSSS	
S^444	
S1!uqfqe'DEEE x  ())y!!(=S
##$--v666%#+,n===%#+.q1Aa5999&3,..00%88888r   c                    t          t                    }|                                \  }}g dg dg dg dg dg dg dg dg d	g d
g dg dg dg dg dg dg dg dg dg dg}g d}t          t	          |                    D ]W}t          t	          ||                             D ]2}|                     ||         |         ||         |         d           3X|                     ||           d S )N)r   L(#@@ܗ3@}s8@Mq
@e3d@r]  @3iSu@ИI@^|@r`  Qd@F<@(kg;@$(@im:@AL@x=@\o0@)rX  r   89?:`?? M@BBU@r-?rm  }?Жs).?^H0~?_H0~?m(?ۿҤ?5??紭f}?oh?Td?灏S?kCE?)rY  ri  r   س2?Rh@X歺5@:ZՒ?r}  <ʃ?_=[?f||?f||?U&5?z"?+2: 	? z?2SZ?ZK?[u?^*6u?)rZ  rj  rz  r   Σ@=4@Ը7a?r  !*?@ k?few?r  
LuT?P6
2?BW"?bi?u+.?Z,E ?给я?aKz?)r[  rk  r{  r  r   Ciq@X @r  2̣@¤@j+@r  ]L3K@RF;@&i@0eV@>h@Mq"@ak@h"_@)r\  rl  r|  r  r  r   Ro&@r  x=\r@S*E@.=@r  ퟧ@Fs@bhur@Kr&@4\@?Z@Ƽ8@yȗ@)r]  rm  r}  r  r  r  r   rg  }\*?0?p $?p $?W?ȯb?-%I(}?L:/?V^?y??绞??/ܹ0R?)r]  rm  r}  r  r  r  rg  r   r  r  r  r  r  r  r  r  r  r  r  r  )r^  rn  r~  r  r  r  r  r  r   ֋hW?1l?1l?c]KH?~8H?ǅ!Y?m/r?gp?$IB?T !?ُa?)r_  ro  r  r  r  r  r  r  r  r   5{2?r  0F$
-?4Ԩ?h[:c?笏?禙uR_?`"D?x>j?rl=C8?)r`  rp  r  r  r  r  r  r  r  r  r   rg  37?ܙ	s?Gw;S?hUM?6?ݴ!?ajK?Ƥ?)r`  rq  r  r  r  r  r  r  r  r  rg  r   37?r  r  r  6?޴!?bjK?r  )ra  rr  r  r  r  r  r  r  r  r  r  r  r   F,ċ?k]j~?B8?JFv?Ɋ ?ea?G?)rb  rs  r  r  r  r  r  r  r  r  r  r  r  r   I(}!?d֋h?|l;m?|%?0??,?)rc  rt  r  r  r  r  r  r  r  r  r  r  r  r  r   Å<)?ͪV?Gǁ?R?2TTz?)rd  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r   bJ!?籆?xwd6?-Z,?)re  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   Hr?5&\R?(dmlv?)rf  rw  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   ~h5?RX;[?)rg  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   q6?)rh  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   )
Aga0007658
Bta0018700
Cfa0016700
Cin0011239rH  
Dme0014628
Dre0008390
Dre0008391
Dre0008392
Fru0004507
Gga0000981
Gga0000982
Hsa0000001
Hsa0010711
Hsa0010730
Mdo0014718
Mms0024821
Ptr0000001
Rno0030248
Xtr0044988rg   )places)r   rG   cophenetic_matrixr   r  assertAlmostEqualr1   )r&   r   distsleavesactualdistsactualleavesr   rz  s           r   test_cophenetic_matrixz)Test_Coretype_Tree.test_cophenetic_matrix*  s4   MM++--v! ! !_ _ _@ @ @+ + +I I Ip p p] ] ]] ] ]@ @ @? ? ?K K Kg g gI I I` ` `I I IM M MW W WC C CL L LL L Lu=
~4 4 4
 s;''(( 	Q 	QA3{1~..// Q Q&&{1~a'8%(1+a&PPPPQv.....r   N)__name__
__module____qualname____doc__r'   r6   rU   rb   r   r   r   r  r&  r*  rB  re  rl  r}  r  r  r  r  r  r  r  rH  rV  r  rZ   r   r   r   r      s       5 5 5.4 4 42C 2C 2Ch2 2 2v6 v6 v6p+ + +$) ) )(< < <B4G 4G 4Gl
V 
V 
V4' 4' 4'lC. C. C.L*X *X *XX$2 $2 $2NR R R#f #f #fR=& =& =&@? ? ?V V V*#Y #Y #YJV< V< V<rF% F% F%XP> P> P>f9 9 9(J/ J/ J/ J/ J/r   r   __main__)
__future__r   r   unittestrN   r  jsonr   	six.movesr   rW  r   r   r	   coretype.treer
   r   r   datasetsTestCaser   r  mainrZ   r   r   <module>r!     s   & & & & & & % % % % % %        



       ( ( ( ( ( ( ( ( ( ( % % % % % % ' ' ' ' ' '    d/ d/ d/ d/ d/* d/ d/ d/N, zHMOOOOO r   