o
    ĎiR                     @   s   d dl Z d dlmZ d dlmZ d dlm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Z dZ!d Z"d!Z#d"Z$e j%d#d$ Z&e j%d%d& Z'G d'd( d(Z(dS ))    Ngeofence_animal_classification&roll_up_labels_to_first_matching_level)%should_geofence_animal_classificationz/f1856211-cfb7-4a5b-9158-c0f72fd09ee6;;;;;;blankz;;;;zS990ae9dd-7a59-4344-afcb-1b7b21368000;mammalia;primates;hominidae;homo;sapiens;humanz(mammalia;primates;hominidae;homo;sapiensz1e2895ed5-780b-48f6-8a11-9e27cb594511;;;;;;vehiclezQddf59264-185a-4d35-b647-2785792bdf54;mammalia;carnivora;felidae;panthera;leo;lionz'mammalia;carnivora;felidae;panthera;leozZfbb23d07-6677-43db-b650-f99ac452c50f;mammalia;carnivora;felidae;panthera;;panthera speciesz$mammalia;carnivora;felidae;panthera;zLdf8514b0-10a5-411f-8ed6-0f415e8153a3;mammalia;carnivora;felidae;;;cat familyzmammalia;carnivora;felidae;;zMeeeb5d26-2a47-4d01-a3de-10b33ec0aee4;mammalia;carnivora;;;;carnivorous mammalzmammalia;carnivora;;;z8f2d233e3-80e3-433d-9687-e29ecc7a467a;mammalia;;;;;mammalzmammalia;;;;z01f689929-883d-4dae-958c-3d57ab5b6c16;;;;;;animalzW330bb1e9-84d6-4e41-afa9-938aee17ea29;mammalia;carnivora;ursidae;ursus;arctos;brown bearz'mammalia;carnivora;ursidae;ursus;arctoszZe7f83bf6-df2c-4ce0-97fc-2f233df23ec4;mammalia;carnivora;ursidae;ursus;maritimus;polar bearz*mammalia;carnivora;ursidae;ursus;maritimuszb85662682-67c1-4ecb-ba05-ba12e2df6b65;mammalia;carnivora;ursidae;ailuropoda;melanoleuca;giant pandaz1mammalia;carnivora;ursidae;ailuropoda;melanoleucazT5a0f5e3f-c634-4b86-910a-b105cb526a24;mammalia;carnivora;ursidae;ursus;;ursus speciesz!mammalia;carnivora;ursidae;ursus;zMec1a70f4-41c0-4aba-9150-292fb2b7a324;mammalia;carnivora;ursidae;;;bear familyzmammalia;carnivora;ursidae;;zR9c564562-9429-405c-8529-04cff7752282;mammalia;carnivora;felidae;puma;concolor;pumaz(mammalia;carnivora;felidae;puma;concolorzXe588253d-d61d-4149-a96c-8c245927a80f;mammalia;carnivora;felidae;felis;margarita;sand catz*mammalia;carnivora;felidae;felis;margaritac                   C   s<   t ttttttttt	t
tttttttttttttttttiS )N)BLANK_FCBLANKHUMAN_FCHUMAN
VEHICLE_FCVEHICLELION_FCLIONPANTHERA_GENUS_FCPANTHERA_GENUSFELIDAE_FAMILY_FCFELIDAE_FAMILYCARNIVORA_ORDER_FCCARNIVORA_ORDERMAMMALIA_CLASS_FCMAMMALIA_CLASSANIMAL_KINGDOM_FCANIMAL_KINGDOMBROWN_BEAR_FC
BROWN_BEARPOLAR_BEAR_FC
POLAR_BEARGIANT_PANDA_FCGIANT_PANDAURSUS_GENUS_FCURSUS_GENUSURSIDAE_FAMILY_FCURSIDAE_FAMILY r#   r#   Z/home/jeff/fluffinator/venv/lib/python3.10/site-packages/speciesnet/geofence_utils_test.pytaxonomy_mapD   s   r%   c                   C   sZ   t dg g ditdg g ddgditg g g g dg dgdd	td
dg iitd
dg iiiS )Nallow)KENTZAAKCA)r'   r(   USA)FRAr'   r(   r+   NY)r,   r+   )r&   blockr.   AUSGBR)r   r   r   SAND_CAT_FCr!   r#   r#   r#   r$   geofence_mapX   sD   r2   c                   @   s<   e Zd ZdZdddZdddZ		ddd	Zdd
dZdS )TestGeofenceUtilsz)Tests for the geofence utility functions.returnNc                 C   s8  t td d |ddrJ t tdd |ddrJ t tdd|ddr!J t tdd |dds,J t tdd |ddr7J t tdd |ddrBJ t tdd|ddsMJ t tdd|ddrXJ t tdd |ddscJ t td	d |ddrnJ t tdd|ddryJ t tdd|ddsJ t tdd |ddrJ t td
d |ddsJ d S )NTcountryadmin1_regionr2   enable_geofencer+   r*   r0   r'   r-   r,   r(   r/   r   r   PUMAr   r   SAND_CATselfr2   r#   r#   r$   *test_should_geofence_animal_classification      
	

	




	




z<TestGeofenceUtils.test_should_geofence_animal_classificationc                 C   s8  t td d |ddrJ t tdd |ddrJ t tdd|ddr!J t tdd |ddr,J t tdd |ddr7J t tdd |ddrBJ t tdd|ddrMJ t tdd|ddrXJ t tdd |ddrcJ t td	d |ddrnJ t tdd|ddryJ t tdd|ddrJ t tdd |ddrJ t td
d |ddrJ d S )NFr5   r+   r*   r0   r'   r-   r,   r(   r/   r9   r<   r#   r#   r$   3test_should_geofence_animal_classification_disabled   r?   zETestGeofenceUtils.test_should_geofence_animal_classification_disabledc                    s  t ttttttg fdd}|g dd u sJ |g dd u s%J |g dt tddfks5J  fdd}|g d	d u sGJ |g d
t	tddfksWJ  fdd}|g dd u siJ |g dt
tddfksyJ  fdd}|g dd u sJ |g dttddfksJ  fdd}|g dd u sJ |g dttddfksJ  fdd}|g dd u sJ |g dttdd fksJ  fd!d}|g d"t
td#dfksJ  fd$d}|g d%ttd&dfksJ  fd'd}|g d(t
td)dfks)J  fd*d}|g d(ttd)dfksBJ tt tg d+d d d,gd- d.d/	 W d    d S 1 sdw   Y  d S )0Nc                       t | d d dgd dd	S )Nspecies?T	labelsscoresr6   r7   target_taxonomy_levelsnon_blank_thresholdr%   r2   r8   r   rF   r2   predictionsr%   r#   r$   <lambda>l      zOTestGeofenceUtils.test_roll_up_labels_to_first_matching_level.<locals>.<lambda>)皙?皙?        rP   rP   rP   rP   )rC   皙?rP   rP   rP   rP   rP   )      ?rP   rP   rP   rP   rP   rP   rR   zclassifier+rollup_to_speciesc                    rA   )NgenusrC   TrD   r   rI   rJ   r#   r$   rL     rM   )333333?rO   {Gz?rU   rU   rU   rU   )gffffff?g      ?rU   rU   rU   rU   rU   gffffff?zclassifier+rollup_to_genusc                    rA   )NfamilyrN   TrD   r   rI   rJ   r#   r$   rL     rM   )皙?rQ   rQ   rQ   rQ   rP   rP   )rW   gzG?rO   rP   rP   rP   rP   Q?zclassifier+rollup_to_familyc                    rA   )NorderrN   TrD   r   rI   rJ   r#   r$   rL     rM   )333333?rO   rQ   rQ   rQ   rP   rP   )rZ   rO   rQ   rQ   q=
ףp?rP   rP   g(\?zclassifier+rollup_to_orderc                    rA   )NclassrN   TrD   r   rI   rJ   r#   r$   rL     rM   )rO   rO   rQ   rQ   rQ   rQ   rP   )rO   rO   rQ   rQ   g)\(?rQ   rP   g=
ףp=?zclassifier+rollup_to_classc                    rA   )NkingdomrX   TrD   r   rI   rJ   r#   r$   rL     rM   )rO   rO   rQ   rQ   rQ   rQ   rQ   )rO   rO   rQ   rQ   r[   rQ   rQ   g(\?zclassifier+rollup_to_kingdomc                       t | d d g dd dd	S )N)rS   rV   rY   r\   r]   g      ?TrD   r   rI   rJ   r#   r$   rL         )rT   rQ   rQ   rQ   rQ   rP   rP   rN   c                    rA   )NrB   rQ   TrD   r   rI   rJ   r#   r$   rL     rM   )rO   rZ   g333333?rP   ffffff?rP   rP   r`   c                    r^   )NrB   rS   rV   rY   r\   rW   TrD   r   rI   rJ   r#   r$   rL     r_   )rQ   rO   rO   g?rP   rP   rP         ?c                    s   t | dd g dd dd	S )Nr0   ra   rW   TrD   r   rI   rJ   r#   r$   rL     r_   )rQ   rQ   rQ   rQ   rQ   rQ   rQ   invalid_levelrZ   TrD   )r   r   r   r   r   r
   r   pytestapproxr    r"   r   r   raises
ValueErrorr   )r=   r%   r2   	rollup_fnr#   rJ   r$   +test_roll_up_labels_to_first_matching_level\  s   
















$z=TestGeofenceUtils.test_roll_up_labels_to_first_matching_levelc                    s   t tttg fdd}|g dt tddfksJ  fdd}|g dttddfks6J  fd	d}|g dttd
dfksNJ d S )Nc              	         t | dd  ddS )Nr(   TrE   rF   r6   r7   r%   r2   r8   r   rI   rJ   r#   r$   rL   ?      zGTestGeofenceUtils.test_geofence_animal_classification.<locals>.<lambda>)rW   rZ   rO   rQ   rW   
classifierc              	      rj   )Nr+   Trk   r   rI   rJ   r#   r$   rL   O  rl   rb   z$classifier+geofence+rollup_to_familyc              	      s   t | dd ddS )Nr+   r-   Trk   r   rI   rJ   r#   r$   rL   ]  rl   rN   z#classifier+geofence+rollup_to_order)r   r   r   r   rd   re   r   )r=   r%   r2   geofence_fnr#   rJ   r$   #test_geofence_animal_classification4  s.   
	

	

	z5TestGeofenceUtils.test_geofence_animal_classification)r4   N)__name__
__module____qualname____doc__r>   r@   ri   ro   r#   r#   r#   r$   r3      s    

ll
 Yr3   ))rd   speciesnet.geofence_utilsr   r   r   r   r   r
   r	   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r"   r!   r:   PUMA_FCr;   r1   fixturer%   r2   r3   r#   r#   r#   r$   <module>   sR   

(