import hou
from pxr import Usd, UsdGeom, Vt, Gf
node = hou.pwd()
stage = node.editableStage()
primpath_path = node.parm("instpath").eval()
instancer_prim = stage.GetPrimAtPath(primpath_path)
if instancer_prim and instancer_prim.IsValid():
    
    attributes = {
        "protoIndices": Vt.IntArray,
        "positions": Vt.Vec3fArray,
        "orientations": Vt.QuathArray,
        "scales": Vt.Vec3fArray,
    }
    
    invisible_ids_attr = instancer_prim.GetAttribute("invisibleIds")
    invisible_ids = set(invisible_ids_attr.Get() or []) if invisible_ids_attr else set()
    
    
    for attr_name, vt_type in attributes.items():
        attr = instancer_prim.GetAttribute(attr_name)
        if attr:
            values = attr.Get() or []
            attr.Set(vt_type([values[i] for i in range(len(values)) if i not in invisible_ids]))
    
    
    for attr in instancer_prim.GetAttributes():
        attr_name = attr.GetName()
        if attr_name.startswith("primvars:"):
            attr_value = attr.Get() or []
            if isinstance(attr_value, (Vt.IntArray, Vt.FloatArray, Vt.Vec3fArray, Vt.QuathArray)):
                attr.Set(type(attr_value)([attr_value[i] for i in range(len(attr_value)) if i not in invisible_ids]))
    
    
    if invisible_ids_attr:
        invisible_ids_attr.Set(Vt.Int64Array([]))