ó
    ãÁ.jÆ  ã                  ój   • S r SSKJr  SSKJrJrJrJr  \\\\\4   r	S	S jr
S
S jrSSS jjrSS jrg)z@Scoring for the QUE-245 spike: IoU matching and accuracy checks.é    )Úannotations)ÚListÚOptionalÚSequenceÚTuplec                óþ  • [        U S   U S   5      [        U S   U S   5      [        U S   U S   5      [        U S   U S   5      4u  p#pE[        US   US   5      [        US   US   5      [        US   US   5      [        US   US   5      4u  pgp‰[        X&5      [        X75      pº[        XH5      [        XY5      pÜ[        SXÊ-
  5      [        SXÛ-
  5      pþXï-  nXB-
  XS-
  -  X†-
  X—-
  -  -   U-
  nUS:”  a  UU-  $ S$ )Nr   é   é   é   ç        )ÚminÚmax)ÚaÚbÚax0Úay0Úax1Úay1Úbx0Úby0Úbx1Úby1Úix0Úiy0Úix1Úiy1ÚiwÚihÚinterÚunions                     Ú2/home/mande/repo/quber/experiments/que245/score.pyÚiour"   
   s  € Ü˜Q˜q™T 1 Q¡4›¬#¨a°©d°A°a±D«/¼3¸qÀ¹tÀQÀqÁT»?ÌCÐPQÐRSÑPTÐVWÐXYÑVZËOÐ[Ñ€CˆcÜ˜Q˜q™T 1 Q¡4›¬#¨a°©d°A°a±D«/¼3¸qÀ¹tÀQÀqÁT»?ÌCÐPQÐRSÑPTÐVWÐXYÑVZËOÐ[Ñ€CˆcÜ�3‹}œc #›mˆÜ�3‹}œc #›mˆÜ��c‘iÓ ¤# c¨3©9Ó"5ˆØ‰G€EØ‰Y˜3™9Ñ%¨©°s±yÑ(AÑAÀEÑI€EØ! A›Iˆ5�5‰=Ð.¨3Ð.ó    c                óú   • [        5       n/ n[        U 5       H_  u  pESu  pg[        U5       H   u  p‰X‚;   a  M  [        XY5      n
X§:”  d  M  X¨pgM"     Ub  UR                  U5        UR	                  XFU45        Ma     U$ )zFGreedy GT->pred matching by IoU. Returns (gt_idx, pred_idx|None, iou).)Nr   )ÚsetÚ	enumerater"   ÚaddÚappend)ÚgtÚpredÚusedÚoutÚgiÚgÚbest_jÚbestÚpjÚpÚvs              r!   Úmatchr4      s|   € ä‹5€DØ
€CÜ˜2–‰ˆØ ‰ˆÜ˜t–_‰EˆBØ‹zÙÜ�A“	ˆAØ�xØ ’fñ %ð ÑØ�H‰H�VÔØ�
‰
�B Ð%Ö&ñ ð €Jr#   c                óR   • [        US   US   5      [        U S   U S   5      -
  U-  $ )zJHow far below the GT top the prediction starts (positive = clipped title).r
   r   )r   )r)   r*   Ú
page_h_ptss      r!   Útop_clip_ptsr7   '   s0   € ä��Q‘˜˜a™Ó!¤C¨¨1©¨r°!©uÓ$5Ñ5¸ÑCÐCr#   c           
     ó<  • [        X5      nU VVVs/ s H  u  p4oTc  M
  X4U4PM     nnnnU VVs/ s H  u    puUPM
     nnn[        U5      [        U5      -
  n	[        S U 5       5      n
U VVVs/ s H  u  p4n[        X   X   5      PM     nnnn[        U 5      [        U5      [        U 5      [        U5      :H  U(       a  [        U5      [        U5      -  OSU(       a  [	        U5      OSU
U	U(       a  [        U5      US.	$ SUS.	$ s  snnnf s  snnf s  snnnf )Nc              3  ó4   #   • U  H  u  pob  M
  Sv •  M     g 7f)Nr
   © )Ú.0Ú_r1   s      r!   Ú	<genexpr>Úpage_metrics.<locals>.<genexpr>1   s   é € Ð3¢1‘x�q˜a—‘¢1ùs   ‚	�	r   )	r)   r*   Úcount_matchÚmean_iouÚmin_iouÚmissedÚextraÚmax_top_clip_ptsÚmatches)r4   ÚlenÚsumr7   r   r   )r)   r*   Úmr-   r1   r3   Úmatchedr<   ÚiousrC   rB   Úclipss               r!   Úpage_metricsrL   ,   s   € Üˆb‹€AÙ./ÕBªa™{ ¨‹{�˜‹{©a€GÒBÙ$Ô%šW‘'�!�Q‹A™W€DÑ%Ü�‹Iœ˜G›Ñ$€EÜÑ3¡1Ó3Ó3€FÙ=DÕEºW±	°¸Œ\˜"™& $¡(Ö+¹W€EÒEä�"‹gÜ�D“	Ü˜2“w¤# d£)Ñ+Þ-1”C˜“I¤ D£	Ò)°sÞ $”3�t”9¨#ØØÞ*/œC ›JØñ
ð 
ð 69Øñ
ð 
ùô CùÛ%ùô Fs   ’	D
ŸD
°DÁ1DN)r   ÚBoxr   rM   ÚreturnÚfloat)r)   úSequence[Box]r*   rP   rN   z&List[Tuple[int, Optional[int], float]])g     Àˆ@)r)   rM   r*   rM   r6   rO   rN   rO   )r)   rP   r*   rP   )Ú__doc__Ú
__future__r   Útypingr   r   r   r   rO   rM   r"   r4   r7   rL   r:   r#   r!   Ú<module>rT      s9   ðÙ Få "ç 2Ó 2àˆE�5˜% Ð&Ñ'€ô/ôö$Dõ
r#   