o
    .wiO                     @   sD  d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZmZ d dlmZ 			d'd
edededed ded dedeeef fddZd
ededefddZd(d
edededefddZ				d)d
ededee deded ee defd!d"Zd
ededefd#d$Zd(d
edededefd%d&ZdS )*    )AnyCallableOptional)Tensor)Literal)permutation_invariant_trainingpit_permutate)'scale_invariant_signal_distortion_ratiosignal_distortion_ratio)"scale_invariant_signal_noise_ratiosignal_noise_ratio)_deprecated_root_import_funcspeaker-wisemaxpredstargetmetric_funcmode)r   zpermutation-wise	eval_func)r   minkwargsreturnc                 K   s$   t dd td| ||||d|S )aG  Wrapper for deprecated import.

    >>> from torch import tensor
    >>> preds = tensor([[[-0.0579,  0.3560, -0.9604], [-0.1719,  0.3205,  0.2951]]])
    >>> target = tensor([[[ 1.0958, -0.1648,  0.5228], [-0.4100,  1.1942, -0.5103]]])
    >>> best_metric, best_perm = _permutation_invariant_training(
    ...     preds, target, _scale_invariant_signal_distortion_ratio)
    >>> best_metric
    tensor([-5.1091])
    >>> best_perm
    tensor([[0, 1]])
    >>> pit_permutate(preds, best_perm)
    tensor([[[-0.0579,  0.3560, -0.9604],
             [-0.1719,  0.3205,  0.2951]]])

    r   audio)r   r   r   r   r   N )r   r   )r   r   r   r   r   r   r   r   f/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/torchmetrics/functional/audio/_deprecated.py_permutation_invariant_training   s   

r   permc                 C      t dd t| |dS )zWrapper for deprecated import.r   r   r   r   )r   r   r   r   r   r   _pit_permutate*   s   
r   F	zero_meanc                 C      t dd t| ||dS )zWrapper for deprecated import.

    >>> from torch import tensor
    >>> target = tensor([3.0, -0.5, 2.0, 7.0])
    >>> preds = tensor([2.5, 0.0, 2.0, 8.0])
    >>> _scale_invariant_signal_distortion_ratio(preds, target)
    tensor(18.4030)

    r	   r   r   r   r    )r   r	   r"   r   r   r   (_scale_invariant_signal_distortion_ratio0      

r#   N   use_cg_iterfilter_length	load_diagc                 C   s   t dd t| |||||dS )af  Wrapper for deprecated import.

    >>> from torch import randn
    >>> preds = randn(8000)
    >>> target = randn(8000)
    >>> _signal_distortion_ratio(preds, target)
    tensor(-11.9930)
    >>> # use with permutation_invariant_training
    >>> preds = randn(4, 2, 8000)  # [batch, spk, time]
    >>> target = randn(4, 2, 8000)
    >>> best_metric, best_perm = _permutation_invariant_training(preds, target, _signal_distortion_ratio)
    >>> best_metric
    tensor([-11.7748, -11.7948, -11.7160, -11.6254])
    >>> best_perm
    tensor([[1, 0],
            [1, 0],
            [1, 0],
            [0, 1]])

    r
   r   r   r   r&   r'   r    r(   )r   r
   r)   r   r   r   _signal_distortion_ratio>   s   
r*   c                 C   r   )zWrapper for deprecated import.

    >>> from torch import tensor
    >>> target = tensor([3.0, -0.5, 2.0, 7.0])
    >>> preds = tensor([2.5, 0.0, 2.0, 8.0])
    >>> _scale_invariant_signal_noise_ratio(preds, target)
    tensor(15.0918)

    r   r   r   r   )r   r   r+   r   r   r   #_scale_invariant_signal_noise_ratioe   s   

r,   c                 C   r!   )zWrapper for deprecated import.

    >>> from torch import tensor
    >>> target = tensor([3.0, -0.5, 2.0, 7.0])
    >>> preds = tensor([2.5, 0.0, 2.0, 8.0])
    >>> _signal_noise_ratio(preds, target)
    tensor(16.1805)

    r   r   r"   )r   r   r"   r   r   r   _signal_noise_ratios   r$   r-   )r   r   )F)Nr%   FN)typingr   r   r   torchr   typing_extensionsr   !torchmetrics.functional.audio.pitr   r   !torchmetrics.functional.audio.sdrr	   r
   !torchmetrics.functional.audio.snrr   r   torchmetrics.utilities.printsr   tupler   r   boolr#   intfloatr*   r,   r-   r   r   r   r   <module>   s^    


' 