
    yj#                         d Z ddlmZ ddlmZmZmZmZ ddlm	Z	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZmZ dd
lmZ dededefdZg dZdS )z
Tree-based structures for computing surprisal from embeddings.
Each tree computes surprisal based on the path to a point in the tree.
    )Any   )InternalNodeLeafNodeSurprisalTreeTreeNode)	CoverNode	CoverTree)GraphSurprisal)LSHSurprisal)PrototypeSurprisal)RPInternalNodeRPTree)SklearnTreeWrapper	tree_typekwargsreturnc                 *   | dk    rt          di |S | dk    rt          dddi|S | dk    rt          dddi|S | dk    rt          di |S | dk    rt          di |S | d	k    rt	          di |S | d
k    rt          di |S t          d|            )a  
    Factory function to create different tree types.

    Args:
        tree_type: Type of tree to create ('rptree', 'kdtree', 'balltree',
                   'covertree', 'lsh', 'graph', 'prototype')
        **kwargs: Additional arguments passed to tree constructor

    Returns:
        An instance of the specified tree type

    Raises:
        ValueError: If tree_type is not recognized
    rptreekdtreer   kdballtreeball	covertreelshgraph	prototypezUnknown tree type: N )r   r   r
   r   r   r   
ValueError)r   r   s     B/DATA/AppData/hermes/projects/honcho/src/dreamer/trees/__init__.pycreate_treer!      s     H	h		!;;D;F;;;	j	 	 !==F=f===	k	!	!""6"""	e		%%f%%%	g		'''''	k	!	!!++F+++:y::;;;    )r!   r	   r
   r   r   r   r   r   r   r   r   r   r   N)__doc__typingr   baser   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   sklearn_wrapperr   strr!   __all__r   r"   r    <module>r)      s    
       A A A A A A A A A A A A + + + + + + + + ! ! ! ! ! !       ) ) ) ) ) ) * * * * * * * * / / / / / /<3 <# <- < < < <B  r"   