Ë
    âNºj?  ã                  óÆ   — d Z ddlmZ ddlZddlZddlmZ ddlZ ej                  d«       ddl	m
Z ddlZddlZddlmZmZmZmZmZmZ ddlmZ d
d„Zed	k(  r e«        yy)zHRender per-run weak target and single, pooled, held-out GNN predictions.é    )ÚannotationsN)ÚPathÚAgg)ÚPROJECTÚRUNSÚcombineÚforwardÚload_samplesÚ
make_model)Úmetricsc                 ó|	  ‡‡‡— t        j                  t        ¬«      } | j                  dt        d¬«       | j                  dd¬«       | j                  dt
        d	¬
«       | j                  «       Š‰j                  j                  «       }t        j                  |j                  «       «      }|j                  }t        ‰j                  «      D �ci c]  }|j                  |“Œ }}t!        j"                  dddd¬«      \  }}i }t%        t&        «      D �]!  \  }	\  Š}
}}|‰   }t)        j*                  |d|› d�z  d¬«      5 }t)        j,                  |d   t(        j.                  «      }d d d «       ||	df   j1                  d d …df   |d d …df   ddd¬«       ||	df   j1                  ||j2                  df   ||j2                  df   ddd¬«       ||	df   j5                  ‰› d|j2                  j7                  «       › d�«       t%        d‰› �dd‰› �fd«      D �]Å  \  }Št9        ˆˆˆfd „|d!   D «       «      }t:        |d"   z  }t=        j*                  |d#d¬$«      }t?        ‰j@                  |«      }|jC                  |d%   «       |jE                  «        t=        jF                  «       5  tI        |tK        |g«      «      jM                  «       jO                  «       jQ                  «       }d d d «       |jR                     }|jU                  t(        j.                  «      |‰› d&‰› �<   ||	|f   j1                  |d d …df   |d d …df   d'|d(ddd¬)«       ||	|f   j1                  ||j2                  df   ||j2                  df   d*d+d,d-d¬.«       tW        ||j2                  «      }||	|f   j5                  ‰jY                  d&«      d   › d/|d0   d1›d2|d3   d1›�«       �ŒÈ ||	   D ]G  }|j[                  d4«       |j]                  d5«       |j_                  d6«       |ja                  d7¬8«       ŒI �Œ$ |jc                  d9d¬:«       |je                  |d;z  d<¬=«       t!        jf                  |«       t)        jh                  |d>z  fi |¤Ž tk        |d;z  «       y c c}w # 1 sw Y   �Œ;xY w# 1 sw Y   �ŒÂxY w)?N)Údescriptionz--reportT)ÚtypeÚrequiredz--kindÚresidual_geo)Údefaultz--budgetià.  )r   r   é   é   )é   é	   )ÚfigsizeÚconstrained_layoutzdata_processed/paired/z_cad_ply_targets.npzF)Úallow_pickleÚ
cad_pos_mmr   é   é   z#cbd3da)ÚsÚcÚ
rasterizedé   z#d92332z: z weak positivesÚsingle_ÚjointÚholdout_c              3  óŒ   •K  — | ];  }|d    ‰j                   k(  sŒ|d   ‰j                  k(  r|d   ‰k(  r|d   ‰k(  r|–— Œ= y­w)ÚkindÚbudgetÚsetupÚeval_runN)r%   r&   )Ú.0ÚrÚargsÚnamer'   s     €€€úmodels/render_gnn_joint.pyÚ	<genexpr>zmain.<locals>.<genexpr>'   sM   øè ø€ ð 2¡.˜Q°A°f±IÀÇÁÓ4JØ˜X™;¨$¯+©+Ò5¸!¸G¹*ÈÒ:MØ˜Z™=¨DÒ0ô ¡.ùs
   ƒA›)AÚrowsÚ
checkpointÚcpu)Úmap_locationÚweights_onlyÚ
state_dictÚ_g      @Úmagma)r   r   ÚcmapÚvminÚvmaxr   é
   Únonez#36d9e7g      à?)r   Ú
facecolorsÚ
edgecolorsÚ
linewidthsr   z: AP Úaverage_precisionz.3fz, IoU Úthreshold_iouÚequalz
CAD X (mm)z
CAD Z (mm)gš™™™™™¹?)ÚalphazGWeak-label diagnostics only: same-run fits and held-out-run predictions)Úfontsizezprediction_maps.pngéª   )Údpizprediction_maps.npz)6ÚargparseÚArgumentParserÚ__doc__Úadd_argumentr   ÚintÚ
parse_argsÚreportÚresolveÚjsonÚloadsÚ	read_textÚparentr
   r&   r,   ÚpltÚsubplotsÚ	enumerater   ÚnpÚloadÚasarrayÚfloat32ÚscatterÚfine_binaryÚ	set_titleÚsumÚnextr   Útorchr   r%   Úload_state_dictÚevalÚno_gradr	   r   Úsigmoidr1   ÚnumpyÚfine_from_coarseÚastyper   ÚsplitÚ
set_aspectÚ
set_xlabelÚ
set_ylabelÚgridÚsuptitleÚsavefigÚcloseÚsavez_compressedÚprint)ÚparserÚreport_pathrL   Úoutr   ÚsamplesÚfigÚaxesÚsavedÚiÚpartÚrootÚrunÚsampleÚdÚposÚjÚrowÚpathr0   ÚmodelÚprobÚfineÚresultÚaxr+   r,   r'   s                            @@@r-   Úmainr†      sŽ  ú€ Ü×$Ñ$´Ô9€FØ
×Ñ˜
¬¸ÐÔ=Ø
×Ñ˜¨.ÐÔ9Ø
×Ñ˜
¬°eÐÔ<Ø×ÑÓ€DØ—+‘+×%Ñ%Ó'€KÜ�Z‰Z˜×-Ñ-Ó/Ó0€FØ
×
Ñ
€CÜ".¨t¯{©{Ô";Ó<Ñ";˜Qˆq�v‰v�q‰yÐ";€GÐ<Ü—‘˜Q ¨7ÀtÔL�I€CˆØ€EÜ&/´§oÑ"ˆÑ"ˆD�$˜˜cØ˜‘ˆÜ�W‰W�TÐ4°S°EÐ9MÐNÑNÐ]bÕcÐghÜ—*‘*˜Q˜|™_¬b¯j©jÓ9ˆC÷ dàˆQ�ˆT‰
×Ñ˜3šq !˜t™9 cª!¨Q¨$¡i°1¸	ÈdÐÔSØˆQ�ˆT‰
×Ñ˜3˜v×1Ñ1°1Ð4Ñ5°s¸6×;MÑ;MÈqÐ;PÑ7QØ 9¸ð 	ô 	?àˆQ�ˆT‰
×Ñ ˜v R¨×(:Ñ(:×(>Ñ(>Ó(@Ð'AÀÐQÔRÜ! W¨T¨FÐ#3°WÀÈÈÐ>OÐ"PÐRS×T‰HˆAˆuÜõ 2 &¨¢.ó 2ó 2ˆCô ˜S Ñ.Ñ.ˆDÜŸ™ D°uÈ4ÔPˆJÜ˜tŸy™y¨&Ó1ˆEØ×!Ñ! *¨\Ñ":Ô;Ø�J‰JŒLÜ—‘•Ü˜u¤g¨v¨hÓ&7Ó8×@Ñ@ÓB×FÑFÓH×NÑNÓP�÷ !à˜×/Ñ/Ñ0ˆDØ'+§{¡{´2·:±:Ó'>ˆE�T�F˜!˜E˜7Ð#Ñ$Ø��A�‰J×Ñ˜s¢1 a 4™y¨#ªa°¨d©)°s¸dÈØ$%¨A¸$ð ô @à��A�‰J×Ñ˜s 6×#5Ñ#5°qÐ#8Ñ9¸3¸v×?QÑ?QÐSTÐ?TÑ;UØ!#°À9ÐY[Ø*.ð ô 0ô ˜T 6×#5Ñ#5Ó6ˆFØ��A�‰J× Ñ  E§K¡K°Ó$4°QÑ$7Ð#8¸¸fÐEXÑ>YÐZ]Ð=^ð _(Ø(.¨Ñ(?ÀÐ'Dð"Fö Gð' Uð* �q”'ˆBØ�M‰M˜'Ô" B§M¡M°,Ô$?ÀÇÁÈ|ÔA\Ø�G‰G˜"ˆGÕò ð; '6ð@ ‡L�LÐZÐeg€LÔhØ‡K�K�Ð+Ñ+°€KÔ5Ü‡I�Iˆc„NÜ×Ñ˜Ð3Ñ3Ñ=°uÒ=Ü	ˆ#Ð%Ñ
%Õ&ùòO =÷
 dÑcú÷ !‘ús   ÃRÅ(R$Ê0AR1Ò$R.	Ò1R;Ú__main__)ÚreturnÚNone)rH   Ú
__future__r   rF   rN   Úpathlibr   Ú
matplotlibÚuseÚmatplotlib.pyplotÚpyplotrR   rc   rU   r^   Úmodels.gnn_joint_experimentr   r   r   r	   r
   r   Úmodels.compare_cad_predictionsr   r†   Ú__name__© ó    r-   Ú<module>r•      sN   ðÙ NÝ "ã Û Ý ã Ø €
‡�ˆuÔ Ý Û Û ç a× aÝ 2ó0'ðf ˆzÒ™4�6Ðr”   