§
    Ú²âjÂ  ã                   óh  — 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ddddœZg d¢Zej        Zd„ Zd„ Zedk    r e¦   «          dS dS )a®  Clouds only: drop the short, small tracks (at most MAX_LEN layers and under MAX_AREA of the largest slice) before the cut
rule, the slicer's blobs on a noisy or sparse cloud. Against the package on the four cloud kinds of eval_v6.py. Swapped in
at split_by_fit (no package change). Writes ../report/drop_short.csv.

    env -u PYTHONPATH PYTHONWARNINGS=ignore .venv/bin/python ~/code/data/meshes/fcp_2910_v6/scripts/drop_short.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)Úclean_10000Ú
clean_2048Únoise0p6_10000Úpn0p6_10000)é   çš™™™™™©?)é   r   )é   gš™™™™™¹?)Úpackagezdrop3-5%zdrop2-5%z	drop4-10%)é   i   é   c                 ó   ‡ ‡— dˆˆ fd„	}|S )Nc                 ó   •‡ ‡‡‡‡‡— t          d„ ‰D ¦   «         d¬¦  «        Šˆˆ	ˆ
fd„t          t          ‰ ‰¦  «        ¦  «        D ¦   «         Š|�|Šˆˆfd„}t          ˆ fd„‰D ¦   «         ˆfd„‰D ¦   «         ˆfd„‰D ¦   «         |||¦  «        S )	Nc              3   ó4   K  — | ]}t          |¦  «        V — Œd S ©N©Úmax)Ú.0Úas     ú=/home/joao/code/data/meshes/fcp_2910_v6/scripts/drop_short.pyú	<genexpr>z&make.<locals>.split.<locals>.<genexpr>   s(   è è € Ð*Ð*˜q•C˜‘F”FÐ*Ð*Ð*Ð*Ð*Ð*ó    g      ð?)Údefaultc                 ó|   •— g | ]8\  }\  }}|d          |d         z
  dz   ‰k    rt          |¦  «        ‰‰z  k     °6|‘Œ9S )Úh1Úh0é   r   )r   ÚiÚpr   ÚamaxÚmax_areaÚmax_lens       €€€r   ú
<listcomp>z'make.<locals>.split.<locals>.<listcomp>    s‚   ø€ ð  Hð  Hð  H‘i�a™˜!˜QÈÈ$ÌÐRSÐTXÔRYÑHYÐ\]ÑH]ÐahÒHhÐHhÕmpÐqrÑmsÔmsÐv~ð  BFñ  wFò  nFð  nF�ð  nFð  nFð  nFr    c                 ó,   •—  ‰‰|          |||¦  «        S r   © )r&   r   ÚbÚCfÚfÚkeeps       €€r   ú<lambda>z%make.<locals>.split.<locals>.<lambda>#   s   ø€ ¨!¨!¨D°¬G°Q¸¸2Ñ*>Ô*>€ r    c                 ó    •— g | ]
}‰|         ‘ŒS r-   r-   )r   r&   Úpartss     €r   r+   z'make.<locals>.split.<locals>.<listcomp>$   s   ø€ Ð.Ð.Ð. A�u˜Q”xÐ.Ð.Ð.r    c                 ó    •— g | ]
}‰|         ‘ŒS r-   r-   )r   r&   Úcoeffss     €r   r+   z'make.<locals>.split.<locals>.<listcomp>$   s   ø€ Ð0IÐ0IÐ0I¸q°¸´Ð0IÐ0IÐ0Ir    c                 ó    •— g | ]
}‰|         ‘ŒS r-   r-   )r   r&   Úareass     €r   r+   z'make.<locals>.split.<locals>.<listcomp>$   s   ø€ ÐKcÐKcÐKcÐYZÈEÐRSÌHÐKcÐKcÐKcr    )r   Ú	enumerateÚzipÚ_split)r4   r6   r8   ÚMÚtolÚfollowsr(   r0   r1   r)   r*   s   ```   @@@€€r   Úsplitzmake.<locals>.split   sí   øøøøøøø€ ÝÐ*Ð* EÐ*Ñ*Ô*°CÐ8Ñ8Ô8ˆð Hð  Hð  Hð  Hð  Hð  H¥9­S°¸Ñ->Ô->Ñ#?Ô#?ð  Hñ  Hô  HˆØÐØˆAØ>Ð>Ð>Ð>Ð>ˆGÝÐ.Ð.Ð.Ð.¨Ð.Ñ.Ô.Ð0IÐ0IÐ0IÐ0IÀDÐ0IÑ0IÔ0IÐKcÐKcÐKcÐKcÐ^bÐKcÑKcÔKcÐefÐhkÐmtÑuÔuÐur    )NNr-   )r*   r)   r?   s   `` r   Úmaker@      s5   øø€ ðvð vð vð vð vð vð vð €Lr    c                  óÆ  — t           dz                       dd¬¦  «        5 } t          j        | ¦  «        }|                     g d¢¦  «         t
          D �]ó}t          j        t
          |         d¬¦  «        }t          |¦  «        }t          D �]·}t          j        t          j        t          |› d|› d	�z  ¦  «        j        ¦  «        }|                     d
¦  «        r6ddt          t          j                             |j        ¦  «        ¦  «        z  ini }t&                               ¦   «         D �]\  }}	|	€t*          nt-          |	Ž t.          _        	 t3          j        |fdt6          t8          dœ|¤Ž}
t*          t.          _        n# t*          t.          _        w xY wt:          D ]{}|                     t3          j        |
                      |¦  «        t8          ¬¦  «        ¦  «        }|                     ||||tC          |
j"        ¦  «        gd„ |D ¦   «         ¢¦  «         Œ||  #                    ¦   «          �ŒtI          |d¬¦  «         �Œ¹�Œõ	 d d d ¦  «         d S # 1 swxY w Y   d S )Nzdrop_short.csvÚwÚ )Únewline)	ÚobjectÚinputÚconfigÚatomsr4   ÚchamferÚp95Ún_meanÚn_over30Úmesh)ÚforceÚ_z.plyÚpnÚnoisegú~j¼t“x?r   )rH   ÚupÚdevice)rS   c                 óH   — g | ]}t          t          |¦  «        d ¦  «        ‘Œ S )é   )ÚroundÚfloat)r   Úxs     r   r+   zmain.<locals>.<listcomp>:   s+   € ÐFeÐFeÐFeÐ^_ÅuÍUÐSTÉXÌXÐWXÑGYÔGYÐFeÐFeÐFer    T)Úflush)%ÚREPORTÚopenÚcsvÚwriterÚwriterowr   ÚtrimeshÚloadr   ÚINPUTSÚnpÚasarrayÚCLOUDSÚverticesÚ
startswithrW   ÚlinalgÚnormÚextentsÚCONFIGSÚitemsr;   r@   r
   Úsplit_by_fitÚfcpÚencoder   r   ÚBUDGETSÚmeasureÚdecodeÚprefixÚlenr4   rY   Úprint)r0   rB   ÚnameÚgÚrefÚinpÚPÚkwÚcfgÚspecÚdÚTÚvs                r   Úmainr€   (   st  € Ý
Ð#Ñ
#×	)Ò	)¨#°rÐ	)Ñ	:Ô	:ð (¸aÝŒJ�q‰MŒMˆØ	�
Š
ÐjÐjÐjÑkÔkÐkÝð 	(ñ 	(ˆDÝ”�S œY¨fÐ5Ñ5Ô5ˆAÝ�a‘&”&ˆCÝð (ñ (�Ý”J�wœ|­F¸Ð5HÐ5H¸sÐ5HÐ5HÐ5HÑ,HÑIÔIÔRÑSÔS�ØLOÏNÊNÐ[_ÑL`ÔL`Ðh�g˜u¥u­R¬Y¯^ª^¸A¼IÑ-FÔ-FÑ'GÔ'GÑGÐHÐHÐfh�Ý!(§¢¡¤ð 	ñ 	‘I�C˜Ø48°L­&¨&ÅdÈDÀk•FÔ'ð5ÝœJ qÐQ°½ÅFÐQÐQÈbÐQÐQ˜å.4�Ô+Ð+ø­f�Ô+Ð4Ð4Ð4Ð4Ý$ð hð h˜ØŸKšK­¬
°1·8²8¸A±;´;ÅvÐ(NÑ(NÔ(NÑOÔO˜ØŸ
š
 D¨#¨s°Aµs¸1¼7±|´|Ð#fÐFeÐFeÐcdÐFeÑFeÔFeÐ#fÑgÔgÐgÐgØ—G’G‘I”I�I‘IÝ�d $Ð'Ñ'Ô'Ð'Ñ'ñ(ð	(ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s+    D1IÅ FÅ2IÆFÆB1IÉIÉIÚ__main__)Ú__doc__r\   ÚsysÚpathlibr   Únumpyrb   r_   ÚpathÚinsertÚdegree_sweepr   r   r   r   rm   Ú__file__ÚresolveÚparentrZ   ÚIMGr
   rd   ra   rj   ro   rl   r;   r@   r€   Ú__name__r-   r    r   ú<module>rŽ      sO  ððð ð €
€
€
Ø 
€
€
€
Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ø €€€à „‡‚�ÐKÑ LÔ LÐ LØ -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø 
€
€
€
à	ˆˆh‰Œ×	Ò	Ñ	!Ô	!Ô	(Ô	/°(Ñ	:€Øˆu�n€Ø Ð Ð Ð Ð Ð à	ˆÐFÑ	GÔ	G€Ø	GÐ	GÐ	G€Ø¨	¸yÐW`Ð
aÐ
a€Ø
Ð
Ð
€Ø	Ô	€ðð ð ð(ð (ð (ð. ˆzÒÐØ€D�F„F€F€F€Fð Ðr    