§
    +OájË*  ã                   ó  — d Z ddl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ej                             d e ee¦  «        j        ¦  «        ¦  «         ej                             dd¦  «         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 m!Z!m"Z"m#Z#m$Z$ d„ d	„ d
„ d„ d„ dœZ%dZ&e dz  Z'e dz  dz  Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.e/dk    r e.ej0        dd…         pg d¢¦  «         dS dS )a–  The gallery behind the synthesis: for every object, cloud and configuration, the parts (render) and the final rings
(slices) that went into tracking, against GT and the points. Object by object (every configuration on
every cloud type, then the next object): ../report/gallery/<cloud>/<name>.html, images in ../report/img/gallery/, the
per-cloud ../report/gallery/<cloud>/index.html and ../report/gallery/index.html, updated as each object is done.

Configurations (ablation.py's): package, pointtest, A, hybrid-gated, hybrid-gated+pointtest (CONFIGS below).
Slices: the rings the encoder tracked (captured at parts_system), at the layers LAYERS and the layer where the package
has the most rings; GT is the exact section of the mesh the cloud came from (clean or noisy).

    env -u PYTHONPATH PYTHONWARNINGS=ignore .venv/bin/python ~/code/data/meshes/fcp_2710_tests/scripts/gallery.py clean_10000 noise0p6_10000 ...
é    N)ÚPathÚAggz/home/joao/code/fcp_devel/api)Úcentres)ÚCSSÚOBJÚREPORTÚROOTÚUPÚrenderÚstatsc                 ó0   — t          j        | d|¬¦  «        S )NÚcuda©ÚdeviceÚup)ÚfcpÚencode©ÚPr   s     ú=/home/joao/code/data/meshes/fcp_2710_tests/scripts/gallery.pyú<lambda>r   "   s   € �SœZ¨°&¸RÐ@Ñ@Ô@€ ó    c                 ó.   — t          j        | |¬¦  «        S ©N)r   )ÚpointfitÚencode_pointtestr   s     r   r   r   #   s   € �xÔ8¸¸rÐBÑBÔB€ r   c                 ó.   — t          j        | |¬¦  «        S r   )ÚrfÚencode_ringfitr   s     r   r   r   $   s   € •rÔ(¨¨rÐ2Ñ2Ô2€ r   c                 ó0   — t          j        | |d¬¦  «        S )NT)r   Úgate©ÚhyÚencode_hybridr   s     r   r   r   %   s   € ¥"Ô"2°1¸À$Ð"GÑ"GÔ"G€ r   c                 ó2   — t          j        | |dd¬¦  «        S )NÚ	pointtestT)r   Úcutsr!   r"   r   s     r   r   r   &   s   € ­BÔ,<¸QÀ2ÈKÐ^bÐ,cÑ,cÔ,c€ r   )Úpackager&   ÚAzhybrid-gatedzhybrid-gated+pointtest)é   é(   é@   éX   ép   ÚgalleryÚimgc                 ó>   — t          j        | | d d…         g¦  «        S )Né   )ÚnpÚvstack)ÚRs    r   Úclosedr6   -   s   € ÝŒ9�a˜˜2˜A˜2œ�ZÑ Ô Ð r   c                 ó~  — i }t          t          | j        ¦  «        ¦  «        D ]˜}|                     t	          | j        |         ¦  «        g ¦  «                             t          j        | j         	                    |¦  «        t          ¦  «        |dd…         z  t          | j        |         ¦  «        f¦  «         Œ™|S )zJPer layer, (metric rings, hole flags) of the Slices S the encoder tracked.Né   )ÚrangeÚlenÚhÚ
setdefaultÚintÚappendr3   ÚasarrayÚringsÚringÚfloatÚboolÚhole)ÚSÚscÚoutÚrs       r   Útracked_ringsrI   1   sž   € à
€CÝ•3�q”s‘8”8‰_Œ_ð oð oˆØ�Š•s˜1œ3˜qœ6‘{”{ BÑ'Ô'×.Ò.µ´
¸1¼7¿<º<È¹?¼?ÍEÑ0RÔ0RÐUWÐXZÐYZÐXZÔU[Ñ0[Õ]aÐbcÔbhÐijÔbkÑ]lÔ]lÐ/mÑnÔnÐnÐnØ€Jr   c                 ó’  ‡8‡9‡:‡;‡<‡=‡>‡?— |                      dd¦  «        \  }}t          j        t          |          d¬¦  «        }|dk    r|n&t          j        t          dz  | › d|› d�z  d¬¦  «        }t          j        t          j        t          dz  | › d|› d�z  ¦  «        j        ¦  «        }t          j	        | d	¦  «        Š>t          j        | 
                    d
d¬¦  «        ¦  «        }t          j        ¦   «         }t          j        |d‰>¬¦  «        Š;t          j        ¦   «         |z
  }	t          j        d         }
t          j        ‰;d¬¦  «        }|�t%          ‰;||¦  «        nt'          d¦  «        t'          d¦  «        f\  }}|› d| › d�}t)          ‰;|t*          |z  | › d|dk    rdn|› dt-          ‰;j        ¦  «        › dt1          d„ ‰;j        D ¦   «         ¦  «        › d|d›�	¦  «         dt3          ‰;|||	|¬¦  «        i}t4                               ¦   «         D �]p\  }}t          j        ¦   «         } ||‰>¦  «        }t          j        ¦   «         |z
  }t          j        d         }t          j        |d¬¦  «        }|�t%          |||¦  «        nt'          d¦  «        t'          d¦  «        f\  }}|› d| › d|› d�}t)          ||t*          |z  | › d|                     dd¦  «        › d|› dt-          |j        ¦  «        › dt1          d„ |j        D ¦   «         ¦  «        › dt-          ‰;j        ¦  «        › d|d›�¦  «         |j        j                             t&          ¦  «        Š=t3          |||||tA          |‰=¦  «        ‰=¬ ¦  «        ||<   �Œr|d!         d"         Š<‰<rtC          ‰<ˆ<fd#„¬$¦  «        nd%}tE          tG          tH          ¦  «        |hz  ¦  «        }|d!         d&         Š9|d!         d'         Š=|‰9j        j%        z
  ‰9j        j&        z  }t'          ‰9j'        d(         ¦  «        }tQ          ‰9j)        ¦  «        Š8tQ          ‰;j)        ¦  «        }ˆ>fd)„Š?i }|D �]<Š:tU          t          j+        ˆ8ˆ9ˆ:ˆ;ˆ?fd*„|D ¦   «         ¦  «        ¦  «        }g } t          j,        |
j-        |k    ¦  «        d+         D ]Û}!t          j        |
j.         /                    |!¦  «        t&          ¦  «        }"‰;j         0                    t
          j1        |"t          j2        t-          |"¦  «        ||         ¦  «        f         ¦  «        }#|  3                    |#‰9j        j%        z
  ‰9j        j&        z  d d …d d,…f         ti          |
j5        |!         ¦  «        f¦  «         ŒÜ|| f|‰:<   �Œ>dgtm          t4          ¦  «        z   }$to          j8        t-          |¦  «        t-          |$¦  «        d-t-          |$¦  «        z  d-t-          |¦  «        z  fd.d/¬0¦  «        \  }%}&ts          |&|¦  «        D �]Ê\  }'Š:ˆ=fd1„t          j:        |‰9j        ‰8‰:         ¦  «        D ¦   «         }(t          j;        |d d …d,f         ‰8‰:         ‰=d,         z  z
  ¦  «        |k    })|(rt          j<        |(¦  «        n3|) =                    ¦   «         r||)d d,…f         nt          j>        d2¦  «        }*|* ?                    d+¦  «        |* !                    d+¦  «        },}+d3|,|+z
   !                    ¦   «         z  d,|z  z   }-ts          |'|$¦  «        D �]½\  }.}|. @                    ||)d+f         ||)df         d,d4d+d¬5¦  «         |(D ]0}/|. A                    |/d d …d+f         |/d d …df         d6d7d,¬8¦  «         Œ1|dk    r|‰:         d         n!||         d"          	                    ‰:g ¦  «        }0|0D ]/\  }1}2 |.jA        t…          |1¦  «        jC        |2rd9nd:d;|2rd<nd=d>d?œŽ Œ0|. D                    |+d+         |-z
  |,d+         |-z   ¦  «         |. E                    |+d         |-z
  |,d         |-z   ¦  «         |. F                    d@¦  «         |. G                    dA¬B¦  «         |dk    rdC|‰:         d+         › �n|› dD‰:› �}3|. H                    |3› ‰:|k    rdEndF› dt1          dG„ |0D ¦   «         ¦  «        › dHt1          dI„ |0D ¦   «         ¦  «        › dJ�dK¬L¦  «         �Œ¿�ŒÌ|% I                    ¦   «          |› d| › dM�}4|% J                    t*          |4z  ¦  «         to          jK        |%¦  «         dF L                    dN„ |                     ¦   «         D ¦   «         ¦  «        }5dF L                    dO„ |                     ¦   «         D ¦   «         ¦  «        }6dP| › dQ|› dRtš          › dS|                     dd¦  «        › dTt�          jO        | ¦  «        › d|                     dd¦  «        › dU|5› dV|4› dW|6› dX�}7t           |z  | › dY�z   Q                    |7¦  «         dZ„ |                     ¦   «         D ¦   «         t-          ‰;j        ¦  «        fS )[NÚ_r2   Úmesh)ÚforceÚcleanÚmeshesz.plyÚpointclouds)r   r   r2   iPÃ  )Úseedr   r   rE   )r   Únanz	_mesh.pngu    Â· mesh route (z mesh): z parts (c              3   ó*   K  — | ]\  }}}|d k     V — ŒdS ©r   N© ©Ú.0ÚsrK   s      r   ú	<genexpr>zone.<locals>.<genexpr>H   s,   è è € Ð5Ð5™W˜Q  1�1�q’5Ð5Ð5Ð5Ð5Ð5Ð5r   z holes), mean/diag ú.4f)ÚdÚmeanÚp95Úsecr0   z.pngõ    Â· ú z: c              3   ó*   K  — | ]\  }}}|d k     V — ŒdS rT   rU   rV   s      r   rY   zone.<locals>.<genexpr>S   s,   è è € Ð4Ð4¡  A q�q˜1’uÐ4Ð4Ð4Ð4Ð4Ð4r   z holes), mesh z, mean/diag )r[   r\   r]   r^   r0   r@   rF   r(   r@   c                 ó.   •— t          ‰|          ¦  «        S ©N)r:   )ÚkÚpks    €r   r   zone.<locals>.<lambda>X   s   ø€ ¥# b¨¤e¡*¤*€ r   )Úkeyr,   r[   rF   Úspacingc                 óœ   •— |                       t          j        dd|gg¦  «        ¦  «        d         t          j        ‰t          ¦  «        z  S )Ng        r   )Úto_worldr3   Úarrayr?   rB   )ÚposeÚzr   s     €r   r   zone.<locals>.<lambda>a   s=   ø€ ˜$Ÿ-š-­¬°3¸¸Q°-°Ñ(AÔ(AÑBÔBÀ1ÔEÍÌ
ÐSUÕW\ÑH]ÔH]Ñ]€ r   c           
      ó|   •— g | ]8}t           ‰‰j        |¦  «         ‰‰j        ‰‰         ¦  «        z
  ¦  «        ‘Œ9S rU   )Úabsrk   )rW   rl   ÚcÚd0rd   Úmesh_dÚzws     €€€€€r   ú
<listcomp>zone.<locals>.<listcomp>d   sF   ø€ ÐTÐTÐTÈA�C   6¤;°Ñ 2Ô 2°R°R¸¼ÀÀ1ÄÑ5FÔ5FÑ FÑGÔGÐTÐTÐTr   r   r8   gÍÌÌÌÌÌ@éK   F)ÚfigsizeÚdpiÚsqueezec                 ó*   •— g | ]}|‰d d…         z  ‘ŒS )Nr8   rU   )rW   ÚLrF   s     €r   rs   zone.<locals>.<listcomp>n   s%   ø€ ÐDÐDÐD˜Qˆa�"�R�a�R”&‰jÐDÐDÐDr   )r2   r8   g{®Gáz´?z#a8a8a8)rX   ro   ÚlwÚzorderrd   g      ø?)ro   rz   r{   z#2e86abz#d1495bgš™™™™™ñ?z--ú-é   )ro   rz   Úlsr{   Úequalé   )Ú	labelsizeu   mesh route Â· its layer u
    Â· layer z (package: most rings)Ú c              3   ó"   K  — | ]
\  }}| V — Œd S rc   rU   ©rW   rK   r;   s      r   rY   zone.<locals>.<genexpr>~   s(   è è € Ð8Ð8©$¨!¨Q A Ð8Ð8Ð8Ð8Ð8Ð8r   z solid, c              3   ó    K  — | ]	\  }}|V — Œ
d S rc   rU   r„   s      r   rY   zone.<locals>.<genexpr>~   s&   è è € ÐEZÐEZÉDÈAÈqÀaÐEZÐEZÐEZÐEZÐEZÐEZr   z holesé   )Úfontsizez_slices.pngc              3   óä   K  — | ]k\  }}d |› dt          |d         j        ¦  «        › dt          d„ |d         j        D ¦   «         ¦  «        › d|d         d›d|d         d›d|d         d›d	�V — Œld
S )ú<tr><td>z	</td><td>r[   c              3   ó*   K  — | ]\  }}}|d k     V — ŒdS rT   rU   )rW   ÚxrK   s      r   rY   z one.<locals>.<genexpr>.<genexpr>ƒ   s1   è è € ÐKnÐKnÑV]ÐVWÐYZÐ\]ÈAÐPQÊEÐKnÐKnÐKnÐKnÐKnÐKnr   r\   z.5fr]   r^   z.1fz
</td></tr>N)r:   ÚpartsÚsum©rW   ÚcfgrH   s      r   rY   zone.<locals>.<genexpr>ƒ   sæ   è è € ð }ð }ÙflÐfiÐklðb˜cð bð b­C°°#´´Ñ,=Ô,=ð bð bÍÐKnÐKnÐabÐcfÔagÔamÐKnÑKnÔKnÑHnÔHnð bð bØ˜Fœ)Ðaðbð bØ23°E´(Ðaðbð bØIJÈ5ÌÐaðbð bð bð }ð }ð }ð }ð }ð }r   c              3   ó:   K  — | ]\  }}d |› d|d         › d�V — ŒdS )z<h3>z!</h3><img src='../../img/gallery/r0   z' loading='lazy'>NrU   rŽ   s      r   rY   zone.<locals>.<genexpr>…   sA   è è € ÐvÐvÑ`fÐ`cÐefÐ[˜#Ð[Ð[ÀÀ%ÄÐ[Ð[Ð[ÐvÐvÐvÐvÐvÐvr   z†<!doctype html><html lang="en"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><title>ú, ú</title><style>uY   </style></head><body>
<p><a href="../index.html">â†� gallery</a> Â· <a href="index.html">u=   </a> Â· <a href="../../synthesis.html">synthesis</a></p>
<h1>ac  </h1>
<p class="mut">"mesh": the mesh route on the mesh the cloud came from (clean or noisy), the reference for parts and rings. Errors against
the clean mesh (mean and p95 of the symmetric nearest-point distance over the diagonal).</p>
<table><tr><th>configuration</th><th>parts</th><th>holes</th><th>mean/diag</th><th>p95/diag</th><th>encode s</th></tr>aˆ  </table>
<h2>Slices: the rings each configuration tracked</h2>
<p class="mut">First column: the mesh route's rings (at the mesh layer nearest in height). Black: GT (exact section of the source mesh at
the cloud's layer). Grey: the points within a spacing of the plane. Red: solid rings, blue dashed: holes. Metric canonical frame of the
cloud (x right, y up).</p>
<img src="../../img/gallery/z " loading="lazy">
<h2>Parts</h2>z
</body></html>z.htmlc                 óf   — i | ].\  }}|d k    ¯|t          |d         j        ¦  «        |d         f“Œ/S )rL   r[   r\   )r:   rŒ   rŽ   s      r   ú
<dictcomp>zone.<locals>.<dictcomp>•   s;   € Ð[Ð[Ð[±F°C¸ÈSÐTZÊ]È]ˆC•#�a˜”f”lÑ#Ô# Q v¤YÐ/È]È]È]r   )RÚrsplitÚtrimeshÚloadr   r	   r3   r?   Úverticesr
   ÚgetÚsampleÚtimeÚperf_counterr   r   ÚspÚCAPÚdecoder   rB   r   ÚIMGr:   rŒ   r�   ÚdictÚCONFIGSÚitemsÚreplacerk   ÚscaleÚastyperI   ÚmaxÚsortedÚsetÚLAYERSÚcenterÚrotationÚ
provenancer   Úlayersr=   ÚargminÚnonzeror;   r@   rA   ri   Úc_Úfullr>   rC   rD   ÚlistÚpltÚsubplotsÚzipÚ
gt_sectionrn   r4   ÚanyÚzerosÚminÚscatterÚplotr6   ÚTÚset_xlimÚset_ylimÚ
set_aspectÚtick_paramsÚ	set_titleÚtight_layoutÚsavefigÚcloseÚjoinr   ÚhtmlÚescapeÚGALÚ
write_text)@ÚnameÚcloudÚtagÚnÚgÚsrcr   ÚrefÚtÚmsecÚmesh_SÚmmÚmmeanÚmp95ÚmimgÚresr�   Úfr[   r^   rE   Úmr\   r]   r0   Úworstr®   ÚXrX   ÚcmÚ
mesh_ringsÚkmÚrsrH   ÚRcÚWÚcolsÚfigÚaxsÚrowÚgtÚnearÚallxyÚloÚhiÚmgÚaxry   r@   r5   r;   ÚlabÚsimgÚrowsÚimgsÚpagero   rp   rd   rq   re   rF   r   rr   s@                                                           @@@@@@@@r   Úonerô   9   sa  øøøøøøøø€ Ø�\Š\˜#˜qÑ!Ô!�F€CˆÝŒ•S˜”Y fÐ-Ñ-Ô-€AØ�gŠ~ˆ~ˆ!ˆ!¥7¤<µ°x±ÀTÐBUÐBUÈCÐBUÐBUÐBUÑ0UÐ]cÐ#dÑ#dÔ#d€CÝ
Œ
•7”<¥ }Ñ 4¸$Ð7LÐ7LÀÐ7LÐ7LÐ7LÑ LÑMÔMÔVÑWÔW€AÝ	Œ��iÑ	 Ô	 €BÝ
Œ*�Q—X’X˜f¨1�XÑ-Ô-Ñ
.Ô
.€CÝÔÑÔ€AÝŒZ˜ F¨rÐ2Ñ2Ô2€FÝÔÑÔ Ñ"€DÝŒV�CŒ[€FÝ	Œ�F 6Ð	*Ñ	*Ô	*€BØ,.¨N•%˜  RÑ(Ô(Ð(ÅÀuÁÄÍuÐUZÉ|Ì|Ð@\�K€Eˆ4ØÐ%Ð%�dÐ%Ð%Ð%€DÝ
ˆ6�2•s˜T‘z dð $Vð $VÀsÈgÂ~À~¸G¸GÐ[^ð $Vð $VÕhkÐlrÔlxÑhyÔhyð $Vð $VÝÐ5Ð5¨¬Ð5Ñ5Ô5Ñ5Ô5ð$Vð $VØJOÐUð$Vð $Vñ Wô Wð Wà•4˜& u°$¸DÀdÐKÑKÔKÐ
L€CÝ—-’-‘/”/ð fñ f‰ˆˆQÝÔÑÔˆØˆAˆa�‰HŒHˆÝÔÑ!Ô! AÑ%ˆÝŒF�3ŒKˆÝŒJ�q Ð(Ñ(Ô(ˆØ()¨•E˜!˜S !Ñ$Ô$Ð$½EÀ%¹L¼LÍ%ÐPUÉ,Ì,Ð;W‰	ˆˆcØÐ)Ð)˜Ð)Ð) Ð)Ð)Ð)ˆÝˆq�!•S˜3‘Y 4ð !nð !n¨U¯]ª]¸3ÀÑ-DÔ-Dð !nð !nÈ#ð !nð !nÕQTÐUVÔU\ÑQ]ÔQ]ð !nð !nÝÐ4Ð4¨A¬GÐ4Ñ4Ô4Ñ4Ô4ð!nð !nÝDGÈÌÑDUÔDUð!nð !nØcgÐmð!nð !nñ 	oô 	oð 	oàŒVŒ\× Ò ¥Ñ'Ô'ˆÝ˜! $¨C°S¸cÍÐWXÐZ\ÑI]ÔI]ÐbdÐeÑeÔeˆˆC‰‰à	ˆYŒ˜Ô	 €BØ13Ð;�C�Ð,Ð,Ð,Ð,Ð-Ñ-Ô-Ð-¸€EÝ•C�‘K”K 5 'Ñ)Ñ*Ô*€FØ	ˆYŒ˜Ô	€BØ	ˆYŒ˜Ô	€BØ	
ˆRŒWŒ^Ñ	˜rœwÔ/Ñ/€AÝˆbŒm˜IÔ&Ñ'Ô'€AÝ�”	ÑÔ€Aå	�”Ñ	Ô	€BØ	^Ð	^Ð	^Ð	^€BØ€JØð !ñ !ˆÝ•”ÐTÐTÐTÐTÐTÐTÐTÐTÐQSÐTÑTÔTÑUÔUÑVÔVˆØˆÝ”˜FœH¨šNÑ+Ô+¨AÔ.ð 	`ð 	`ˆAÝ”˜FœL×-Ò-¨aÑ0Ô0µ%Ñ8Ô8ˆBØ”×$Ò$¥R¤U¨2­r¬wµs¸2±w´wÀÀ2ÄÑ/GÔ/GÐ+GÔ%HÑIÔIˆAØ�IŠI˜˜RœWœ^Ñ+¨r¬wÔ/?Ñ?ÀÀÀÀBÀQÀBÀÔGÍÈfÌkÐZ[ÌnÑI]ÔI]Ð^Ñ_Ô_Ð_Ð_Ø˜R˜ˆ
�1‰‰Øˆ8•d�7‘m”mÑ#€DÝŒ|�C ™KœK­¨T©¬¸SÅ3ÀtÁ9Ä9¹_ÈcÕTWÐX^ÑT_ÔT_ÑN_Ð<`ÐfhÐrwÐxÑxÔx�H€CˆÝ�c˜6Ñ"Ô"ð pñ p‰ˆˆQØDÐDÐDÐD¥"¤-°°R´W¸aÀ¼dÑ"CÔ"CÐDÑDÔDˆÝŒv�a˜˜˜˜1˜”g  !¤ r¨!¤u¡Ñ,Ñ-Ô-°Ò2ˆØ!#ÐZ•”	˜"‘”�¸¿º¹¼Ð*Y¨!¨D°"°1°"¨H¬+¨+ÍÌÐRXÑIYÔIYˆØ—’˜1‘”˜uŸyšy¨™|œ|ˆBˆØ�R˜"‘W—M’M‘O”OÑ# a¨!¡eÑ+ˆÝ˜3 ‘~”~ð 	pñ 	p‰GˆB�Ø�JŠJ�q˜˜q˜”z 1 T¨1 W¤:°°iÀAÈaˆJÑPÔPÐPØð Cð C�Ø—’˜˜!˜!˜!˜Q˜$œ  1 1 1 a 4¤¨C°CÀ�ÑBÔBÐBÐBØ(+¨vª¨�J˜q”M !Ô$Ð$¸3¸s¼8ÀGÔ;L×;PÒ;PÐQRÐTVÑ;WÔ;WˆEØð pð p‘��1Ø�”� ™œœ°QÐ(E¨	¨	¸IÈ#ÐZ[ÐRdÐRVÐRVÐadÐmnÐoÐoÐoÐoÐoØ�KŠK˜˜1œ ™
 B q¤E¨B¡JÑ/Ô/Ð/°·²¸RÀ¼UÀR¹ZÈÈAÌÐQSÉÑ1TÔ1TÐ1TÐVX×VcÒVcÐdkÑVlÔVlÐVlØ�NŠN QˆNÑ'Ô'Ð'ØCFÈ&Â=À=Ð?¨Z¸¬]¸1Ô-=Ð?Ð?Ð?ÐY\ÐVkÐVkÐhiÐVkÐVkˆCØ�LŠL˜Cð c¸QÀ%ºZ¸ZÐ!9Ð!9ÈRð cð cÝÐ8Ð8°%Ð8Ñ8Ô8Ñ8Ô8ðcð cÝBEÐEZÐEZÐTYÐEZÑEZÔEZÑBZÔBZðcð cð cØmnð ñ pô pð pñ pñ	pð ×ÒÑÔÐØÐ'Ð'�dÐ'Ð'Ð'€DØ‡K‚K•�d‘
ÑÔÐÝ„Iˆc�N„N€NØ�7Š7ð }ð }Øps×pyÒpyÑp{Ôp{ð}ñ }ô }ñ }ô }€Dà�7Š7ÐvÐvÐjm×jsÒjsÑjuÔjuÐvÑvÔvÑvÔv€DðØKOðð ØSXðð Ýilðð àDIÇMÂMÐRUÐWZÑD[ÔD[ðð õ 
„[�ÑÔðð ð "ŸMšM¨#¨sÑ3Ô3ðð ð x|ðð ð "ðð ð ðð ð €Dõ 	ˆ5�[�d�>�>�>Ñ!×-Ò-¨dÑ3Ô3Ð3Ø[Ð[¸c¿iºi¹k¼kÐ[Ñ[Ô[Õ]`ÐagÔamÑ]nÔ]nÐnÐnr   c                 ó>  — d                      d„ |                     ¦   «         D ¦   «         ¦  «        }t          | z  dz                       d| › dt          › d|                      dd¦  «        › d	d                      d
„ t          D ¦   «         ¦  «        › d|› d�¦  «         d S )Nr‚   c              3   ó�   ‡K  — | ]@\  }\  Š}d |› d|› d|› d�d                      ˆfd„t          D ¦   «         ¦  «        z   dz   V — ŒAdS )z<tr><td><a href='ú.html'>z</a></td><td>ú</td>r‚   c              3   ó\   •K  — | ]&}d ‰|         d         › d‰|         d         d›d�V — Œ'dS )z<td>r   r_   r2   rZ   rø   NrU   )rW   ro   rH   s     €r   rY   z(write_index.<locals>.<genexpr>.<genexpr>š   sJ   øè è € ÐUÐUÈÐC A a¤D¨¤GÐCÐC°°1´°a´ÐCÐCÐCÐCÐUÐUÐUÐUÐUÐUr   ú</tr>N)rÆ   r¢   )rW   rË   ÚmprH   s      @r   rY   zwrite_index.<locals>.<genexpr>™   sš   øè è € ð Cð CÙdqÐdhÑjqÐklÐnpð Q tÐPÐP°DÐPÐPÀrÐPÐPÐPØ—W’WÐUÐUÐUÐUÍWÐUÑUÔUÑUÔUñVØX_ñ`ð Cð Cð Cð Cð Cð Cr   ú
index.htmlz�<!doctype html><html lang="en"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><title>Gallery: r’   u�   </style></head><body>
<p><a href="../index.html">â†� gallery</a> Â· <a href="../../synthesis.html">synthesis</a></p><h1>Gallery: rK   r`   uÙ   </h1>
<p class="mut">parts Â· mean/diag per configuration; mesh: the mesh route's parts. Each object's page has its slices and part renders.
Objects appear as they are done.</p>
<table><tr><th>object</th><th>mesh</th>c              3   ó"   K  — | ]
}d |› d�V — ŒdS )ú<th>ú</th>NrU   ©rW   ro   s     r   rY   zwrite_index.<locals>.<genexpr>    s*   è è € Ð/QÐ/QÀA°°q°°°Ð/QÐ/QÐ/QÐ/QÐ/QÐ/Qr   rú   ú</table></body></html>)rÆ   r£   rÉ   rÊ   r   r¤   r¢   )rÌ   Údonerñ   s      r   Úwrite_indexr  ˜   s  € Ø�7Š7ð Cð CØuy×uÒuñ  vBô  vBðCñ Cô Cñ Cô C€Dåˆ5�[�<Ñ×+Ò+ð -wØTYð-wð -wÝjmð-wð -wàlq×lyÒlyÐz}ð  @Cñ  mDô  mDð-wð -wð
 )+¯ªÐ/QÐ/QÍÐ/QÑ/QÔ/QÑ(QÔ(Qð-wð -wð
 Y]ð-wð -wð -wñ xô xð xð xð xr   c                 óR  ‡ — d                      ˆ fd„|D ¦   «         ¦  «        }t          dz                       dt          › dd                      t          ¦  «        › dd                      d	„ ‰ D ¦   «         ¦  «        › d
d                      d„ ‰ D ¦   «         ¦  «        › d|› d�¦  «         d S )Nr‚   c              3   óp   •‡K  — | ]/Šd ‰› d�d                      ˆfd„‰D ¦   «         ¦  «        z   dz   V — Œ0dS )r‰   rø   r‚   c           
   3   óX   •K  — | ]$}d |› d‰› d|                      dd¦  «        › d�V — Œ%dS )z<td><a href='ú/r÷   rK   r`   z	</a></td>N©r¤   )rW   ro   rË   s     €r   rY   z&write_top.<locals>.<genexpr>.<genexpr>¤   sk   øè è € ð  5Fð  5FÐyzÐ5tÀQÐ5tÐ5tÈÐ5tÐ5tÐVW×V_ÒV_Ð`cÐehÑViÔViÐ5tÐ5tÐ5tð  5Fð  5Fð  5Fð  5Fð  5Fð  5Fr   rú   N)rÆ   )rW   rË   Úcloudss    @€r   rY   zwrite_top.<locals>.<genexpr>¤   s”   øøè è € ð 1ð 1Ø"&ð +˜tÐ*Ð*Ð*¨R¯WªWð  5Fð  5Fð  5Fð  5Fð  Eð  5Fñ  5Fô  5Fñ  .Fô  .Fñ  FØñð 1ð 1ð 1ð 1ð 1ð 1r   rü   zœ<!doctype html><html lang="en"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1"><title>Gallery</title><style>uò   </style></head><body>
<p><a href="../synthesis.html">â†� synthesis</a> Â· <a href="../index.html">report</a></p><h1>Gallery: every method on the same object</h1>
<p class="mut">Each page: one object on one cloud type with all configurations (r‘   zˆ): a table, the slices (all
methods side by side, layer by layer) and the part renders. Objects appear as they are done. By cloud type:
r_   c              3   óP   K  — | ]!}d |› d|                      dd¦  «        › d�V — Œ"dS )z	<a href='z/index.html'>rK   r`   z</a>Nr  r   s     r   rY   zwrite_top.<locals>.<genexpr>«   sD   è è € ÐSÐSÀqÐB˜ÐBÐB¨¯ª°3¸Ñ)<Ô)<ÐBÐBÐBÐSÐSÐSÐSÐSÐSr   z .</p>
<table><tr><th>object</th>c              3   óJ   K  — | ]}d |                      dd¦  «        › d�V — ŒdS )rþ   rK   r`   rÿ   Nr  r   s     r   rY   zwrite_top.<locals>.<genexpr>¬   s<   è è € Ð"UÐ"UÈÐ#D¨!¯)ª)°C¸Ñ*=Ô*=Ð#DÐ#DÐ#DÐ"UÐ"UÐ"UÐ"UÐ"UÐ"Ur   rú   r  )rÆ   rÉ   rÊ   r   r¢   )r	  ÚnamesÚlinkss   `  r   Ú	write_topr  £   s  ø€ Ø�GŠGð 1ð 1ð 1ð 1Ø*/ð1ñ 1ô 1ñ 1ô 1€Eåˆ<Ñ×#Ò#ð %|Ýadð%|ð %|ð RV×QZÒQZÕ[bÑQcÔQcð%|ð %|ð
 ‡‚ÐSÐSÈFÐSÑSÔSÑSÔSð%|ð %|ð Ÿ7š7Ð"UÐ"UÈfÐ"UÑ"UÔ"UÑUÔUð%|ð %|ð ]bð%|ð %|ð %|ñ }ô }ð }ð }ð }r   c                 ó†  ‡ ‡— t                                dd¬¦  «         ‰ D ]!}t          |z                       dd¬¦  «         Œ"d„ ‰ D ¦   «         Št          D ]j}‰ D ]C}t	          ||¦  «        ‰|         |<   t          |‰|         ¦  «         t          ||d¬¦  «         ŒDt          ‰ ˆ ˆfd„t          D ¦   «         ¦  «         ŒkdS )zqObject by object: every configuration on every cloud type, then the next object (pages written as they are done).T)ÚparentsÚexist_okc                 ó   — i | ]}|i “ŒS rU   rU   r   s     r   r”   zmain.<locals>.<dictcomp>´   s   € Ð"Ð"Ð"�aˆAˆrÐ"Ð"Ð"r   )Úflushc                 ó4   •— g | ]}|‰‰d                   v ¯|‘ŒS )éÿÿÿÿrU   )rW   rÎ   r	  r  s     €€r   rs   zmain.<locals>.<listcomp>º   s,   ø€ ÐCÐCÐC ¨Q°$°v¸b´zÔ2BÐ-BÐ-B˜1Ð-BÐ-BÐ-Br   N)r    ÚmkdirrÉ   r   rô   r  Úprintr  )r	  rÌ   rË   r  s   `  @r   Úmainr  ¯   s÷   øø€ å‡I‚I�d T€IÑ*Ô*Ð*Øð 9ð 9ˆÝ	ˆu‰×Ò D°4ÐÑ8Ô8Ð8Ð8Ø"Ð"˜6Ð"Ñ"Ô"€DÝð Eð EˆØð 	+ð 	+ˆEÝ # D¨%Ñ 0Ô 0ˆD�ŒK˜ÑÝ˜˜t Eœ{Ñ+Ô+Ð+Ý�$˜ TÐ*Ñ*Ô*Ð*Ð*Ý�&ÐCÐCÐCÐCÐC¥cÐCÑCÔCÑDÔDÐDÐDðEð Er   Ú__main__r2   )Úclean_10000Ú
clean_2048Únoise0p6_10000Únoise1_10000)1Ú__doc__rÇ   Úsysr›   Úpathlibr   Ú
matplotlibÚuseÚmatplotlib.pyplotÚpyplotr´   Únumpyr3   r–   ÚpathÚinsertÚstrÚ__file__ÚparentÚsplitsr�   r   Úhybridr#   r   Úringfitr   Ú
fcp._slicer   Úparts_reportr   r   r   r	   r
   r   r   r¢   rª   rÉ   r    r6   rI   rô   r  r  r  Ú__name__ÚargvrU   r   r   ú<module>r2     s:  ðð
ð 
ð €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø €
„ˆuÑ Ô Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€à „‡‚��3�3�t�t˜H‘~”~Ô,Ñ-Ô-Ñ .Ô .Ð .Ø „‡‚�Ð2Ñ 3Ô 3Ð 3Ø Ð Ð Ð Ø 
€
€
€
Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ BÐ Bð AÐ@ØBÐBØ	2Ð	2ØGÐGØcÐcðð €ð 
€ØˆyÑ€Øˆu�n�yÑ €ð!ð !ð !ðð ð ð\oð \oð \oð~xð xð xð	}ð 	}ð 	}ðEð Eð Eð ˆzÒÐØ€DˆŒ�!�"�"ŒÐ	XÐXÐXÐXÑYÔYÐYÐYÐYð Ðr   