§
    Ú²âjó  ã                   ó`  — d Z ddlZddlZddlmZ ddlZddlZej         	                    dd¦  «         ddl
mZmZmZmZ ddlZ ee¦  «                             ¦   «         j        j        dz  Zedz  ZddlmZ  ed	¦  «        Zg d
¢ZdZd\  ZZej        Zd„ Zd„ Zedk    r e¦   «          dS dS )ag  Stop at the noise floor: the atoms are orthonormal, so the noise of the rings spreads evenly over them; its level is
estimated from the values at the top height degrees of the long parts (median |value| / 0.6745, the wavelet rule), and the
descriptor keeps only the atoms above c times that level (a prefix: the values are unchanged). Measured at the kept count
(capped at 6144) against the package's 1024 and 6144 prefixes, on the meshes and the four cloud kinds.
Writes ../report/noise_floor.csv.

    env -u PYTHONPATH PYTHONWARNINGS=ignore .venv/bin/python ~/code/data/meshes/fcp_2910_v6/scripts/noise_floor.py
é    N)ÚPathz6/home/joao/code/data/meshes/fcp_2810_partition/scripts)ÚDEVICEÚOBJÚUPÚRefÚreportÚimg)Ú_partsz6/home/joao/code/data/meshes/fcp_2710_tests/pointclouds)ÚmeshÚclean_10000Ú
clean_2048Únoise0p6_10000Úpn0p6_10000)g       @g      @g      @)é   é   c           	      ó  — g }t          t          |¦  «        ¦  «        D �])}t          t          j        t          j        ||         ¦  «                             d¦  «        dk    ¦  «        ¦  «        }t          t          j        t          j        ||         ¦  «                             d¦  «        dk    ¦  «        ¦  «        }|t          k     s|t          dz   k     rŒ½||         dd…|t          z
  |…f         j	        ||         z  }| 
                    t          j        |¦  «        t          j        ||         ¦  «        z  ¦  «         �Œ+|r6t          t          j        t          j        |¦  «        ¦  «        dz  ¦  «        ndS )z`The atoms' noise level (score units: |v| sqrt(w)) from the top height degrees of the long parts.r   é   é   Ng/Ý$�•å?g        )ÚrangeÚlenÚintÚnpÚcount_nonzeroÚabsÚsumÚMIN_LENÚTOPÚTÚappendÚsqrtÚfloatÚmedianÚconcatenate)	ÚPÚYÚPhiÚwÚvalsÚbÚJÚnÚvs	            ú>/home/joao/code/data/meshes/fcp_2910_v6/scripts/noise_floor.pyÚnoise_levelr.      s1  € à€DÝ•3�q‘6”6‰]Œ]ð /ñ /ˆÝ•Ô ¥¤¨¨A¬¡¤×!3Ò!3°AÑ!6Ô!6¸Ò!:Ñ;Ô;Ñ<Ô<ˆÝ•Ô ¥¤¨¨A¬¡¤×!3Ò!3°AÑ!6Ô!6¸Ò!:Ñ;Ô;Ñ<Ô<ˆØ�wŠ;ˆ;˜!�c A™gš+˜+ØØ�ŒF�1�1�1�a�#‘g˜a�i�<Ô Ô" Q q¤TÑ)ˆØ�Š•B”F˜1‘I”I¥¤¨¨!¬¡¤Ñ-Ñ.Ô.Ð.Ñ.Ø>BÐK�5•”�2œ>¨$Ñ/Ô/Ñ0Ô0°6Ñ9Ñ:Ô:Ð:ÈÐKó    c                  ó‚  ‡— t           dz                       dd¬¦  «        5 } t          j        | ¦  «        }|                     g d¢¦  «         t
          D �]Ð}t          j        t
          |         d¬¦  «        }t          |¦  «        }t          D �]ƒ}|dk    r|i }}n†t          j        t          j        t          |› d|› d	�z  ¦  «        j        ¦  «        }|                     d
¦  «        r6ddt          t          j                             |j        ¦  «        ¦  «        z  ini }i Šˆfd„}|t&          _        	 t+          j        |fdt.          t0          dœ|¤Ž}	t2          t&          _        n# t2          t&          _        w xY wd„ t5          ‰d         ¦  «        D ¦   «         \  }
}}}t7          |
|||¦  «        }|	j        \  }}||	j        dz   z  }t          j        |                     t          ¦  «        ¦  «        t          j         t          j        |t          ¦  «        |         ¦  «        z  }ddg}tB          D ]X}| "                    d|d›�|dk    r(tG          t          j$        |||z  k    ¦  «        ¦  «        ntK          |¦  «        f¦  «         ŒY|D ]l\  }}t+          j&        |	 '                    |¦  «        t0          ¬¦  «        }|                     |||||gd„ | (                    |¦  «        D ¦   «         ¢¦  «         Œm|  )                    ¦   «          �Œ…tU          |d¬¦  «         �ŒÒ	 d d d ¦  «         d S # 1 swxY w Y   d S )Nznoise_floor.csvr'   Ú )Únewline)	ÚobjectÚinputÚconfigÚatomsÚlevelÚchamferÚp95Ún_meanÚn_over30r   )ÚforceÚ_z.plyÚpnÚnoisegú~j¼t“x?c                  ó2   •— t          | i |¤Ž‰d<   ‰d         S )NÚsys)Ú_sys)ÚaÚkÚcaps     €r-   Úspyzmain.<locals>.spy;   s    ø€ Ý!% q ¨A  �C˜‘JØ˜uœ:Ð%r/   é   )r6   ÚupÚdevicec              3   óX   K  — | ]%\  }}|rt          j        |t          ¦  «        n|V — Œ&d S )N)r   Úasarrayr!   )Ú.0ÚiÚxs      r-   ú	<genexpr>zmain.<locals>.<genexpr>D   s<   è è € ÐcÐcÁTÀQÈ¸Ð @¥¤
¨1­eÑ 4Ô 4Ð 4¸qÐcÐcÐcÐcÐcÐcr/   rA   r   )zpackage-1024i   )zpackage-6144rG   zfloor-Úgr   )rI   c                 óH   — g | ]}t          t          |¦  «        d ¦  «        ‘Œ S )é   )Úroundr!   )rL   rN   s     r-   ú
<listcomp>zmain.<locals>.<listcomp>O   s)   € Ð<hÐ<hÐ<hÐTU½UÅ5ÈÁ8Ä8ÈQÑ=OÔ=OÐ<hÐ<hÐ<hr/   T)Úflush)+ÚREPORTÚopenÚcsvÚwriterÚwriterowr   ÚtrimeshÚloadr   ÚINPUTSr   rK   ÚCLOUDSÚverticesÚ
startswithr!   ÚlinalgÚnormÚextentsr
   Úparts_systemÚfcpÚencoder   r   rB   Ú	enumerater.   r6   ÚMr   Úastyper    ÚCSr   r   r   r   ÚdecodeÚprefixÚmeasurerU   Úprint)ÚfÚwrÚnamerP   ÚrefÚinpÚgeomÚkwrF   Údr$   r%   r&   r'   r7   rM   r,   ÚblkÚscoreÚrowsÚcÚcfgr   ÚmrE   s                           @r-   Úmainr}   ,   s…  ø€ Ý
Ð$Ñ
$×	*Ò	*¨3¸Ð	*Ñ	;Ô	;ð $$¸qÝŒZ˜‰]Œ]ˆØ
�ŠÐkÐkÐkÑlÔlÐlÝð !	$ñ !	$ˆDÝ”�S œY¨fÐ5Ñ5Ô5ˆAÝ�a‘&”&ˆCÝð ñ �Ø˜&’=�=Ø  "˜"�D�Dåœ:¥g¤lµ6¸tÐ<OÐ<OÀcÐ<OÐ<OÐ<OÑ3OÑ&PÔ&PÔ&YÑZÔZ�DØPS×P^ÒP^Ð_cÑPdÔPdÐl˜' 5­5µ´·²ÀÄ	Ñ1JÔ1JÑ+KÔ+KÑ#KÐLÐLÐjl�BØ�ð&ð &ð &ð &ð &ð '*•Ô#ð/Ýœ
 4ÐP¨t½Å6ÐPÐPÈRÐPÐP�Aå*.•FÔ'Ð'ø­$•FÔ'Ð.Ð.Ð.Ð.ØcÐcÍYÐWZÐ[`ÔWaÑMbÔMbÐcÑcÔc‘��1�c˜1Ý# A q¨#¨qÑ1Ô1�à”w‘��1Ø˜AœC !™G‘n�Ýœ˜qŸxšx­™œÑ/Ô/µ"´'½"¼*ÀQÍÑ:NÔ:NÈsÔ:SÑ2TÔ2TÑT�Ø.Ð0FÐG�Ýð uð u�AØ—K’K ¨!   Ð]bÐefÒ]fÐ]fµµRÔ5EÀeÈaÐRWÉiÒFWÑ5XÔ5XÑ1YÔ1YÐ1YÕloÐpqÑlrÔlrÐ sÑtÔtÐtÐtØ"ð kð k‘F�C˜Ýœ
 1§8¢8¨A¡;¤;µvÐ>Ñ>Ô>�AØ—K’K  s¨C°°EÐ iÐ<hÐ<hÐY\×YdÒYdÐefÑYgÔYgÐ<hÑ<hÔ<hÐ iÑjÔjÐjÐjØ—’‘	”	�	‘	Ý�$˜dÐ#Ñ#Ô#Ð#Ñ#ðC!	$ð$$ð $$ð $$ñ $$ô $$ð $$ð $$ð $$ð $$ð $$ð $$ð $$øøøð $$ð $$ð $$ð $$ð $$ð $$s+   ¡DL4Ä6 E(ÅL4Å(E;	Å;F+L4Ì4L8Ì;L8Ú__main__) Ú__doc__rX   rA   Úpathlibr   Únumpyr   r[   ÚpathÚinsertÚdegree_sweepr   r   r   r   re   Ú__file__ÚresolveÚparentrV   ÚIMGr
   r^   r]   rj   r   r   rd   rB   r.   r}   Ú__name__© r/   r-   ú<module>r‹      sD  ððð ð €
€
€
Ø 
€
€
€
Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€à „‡‚�ÐKÑ LÔ LÐ LØ -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 
€
€
€
à	ˆˆh‰Œ×	Ò	Ñ	!Ô	!Ô	(Ô	/°(Ñ	:€Øˆu�n€Ø Ð Ð Ð Ð Ð à	ˆÐFÑ	GÔ	G€Ø	OÐ	OÐ	O€Ø€Ø�€ˆØÔ€ð
Lð 
Lð 
Lð%$ð %$ð %$ðP ˆzÒÐØ€D�F„F€F€F€Fð Ðr/   