o
    .wi"                     @   sp  d dl 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 d dlmZ d dl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 dlmZ d dlmZ 		dQdedede ded def
ddZ!		dRdedede"ded def
ddZ#dede$eef fd d!Z%	"	#		"dSdeded$eee"e$e"e"f f  d%e"ded d&eee e$e d'f f  defd(d)Z&dTdeded+e defd,d-Z'	.dUdeded+e d/e(deee e$ee ef f f
d0d1Z)	dVdededed defd2d3Z*	4	5	6		"	7	8	9	:dWdeded;e(d<ee"ee" f d=ee ee  f ded d$eee"e$e"e"f f  d>e"d?e"d@e$e"d'f dAeedB  defdCdDZ+	4	5	6		"	7	8	.	.dXdeded;e(d<ee"ee" f d=ee ee  f ded d$eee"e$e"e"f f  d>e"d?e"dEe(dFe(deee$eef f fdGdHZ,dYdededJ defdKdLZ-	M	N	dZdeded=ee  d<ee" deed  defdOdPZ.d"S )[    )Sequence)OptionalUnion)Tensor)Literal)spectral_distortion_index)-error_relative_global_dimensionless_synthesis)image_gradients)peak_signal_noise_ratio)relative_average_spectral_error),root_mean_squared_error_using_sliding_window)spectral_angle_mapper).multiscale_structural_similarity_index_measure#structural_similarity_index_measure)total_variation)universal_image_quality_index)_deprecated_root_import_func   elementwise_meanpredstargetp	reduction)r   sumnonereturnc                 C      t dd t| |||dS )zWrapper for deprecated import.

    >>> from torch import rand
    >>> preds = rand([16, 3, 16, 16])
    >>> target = rand([16, 3, 16, 16])
    >>> _spectral_distortion_index(preds, target)
    tensor(0.0234)

    r   imager   r   r   r   )r   r   r    r   f/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/torchmetrics/functional/image/_deprecated.py_spectral_distortion_index      
r!      ratio)r   r   r   Nc                 C   r   )zWrapper for deprecated import.

    >>> from torch import rand
    >>> preds = rand([16, 1, 16, 16])
    >>> target = preds * 0.75
    >>> _error_relative_global_dimensionless_synthesis(preds, target).round()
    tensor(10.)

    r   r   r   r   r$   r   )r   r   r%   r   r   r    ._error_relative_global_dimensionless_synthesis*   r"   r&   imgc                 C   s   t dd t| dS )a  Wrapper for deprecated import.

    >>> import torch
    >>> image = torch.arange(0, 1*1*5*5, dtype=torch.float32)
    >>> image = torch.reshape(image, (1, 1, 5, 5))
    >>> dy, dx = _image_gradients(image)
    >>> dy[0, 0, :, :]
    tensor([[5., 5., 5., 5., 5.],
            [5., 5., 5., 5., 5.],
            [5., 5., 5., 5., 5.],
            [5., 5., 5., 5., 5.],
            [0., 0., 0., 0., 0.]])

    r	   r   r'   )r   r	   r(   r   r   r    _image_gradients=   s   

r)   N      $@
data_rangebasedim.c                 C   s   t dd t| |||||dS )zWrapper for deprecated import.

    >>> from torch import tensor
    >>> pred = tensor([[0.0, 1.0], [2.0, 3.0]])
    >>> target = tensor([[3.0, 2.0], [1.0, 0.0]])
    >>> _peak_signal_noise_ratio(pred, target)
    tensor(2.5527)

    r
   r   r   r   r+   r,   r   r-   )r   r
   r.   r   r   r    _peak_signal_noise_ratioP   s   
r/      window_sizec                 C      t dd t| ||dS )zWrapper for deprecated import.

    >>> from torch import rand
    >>> preds = rand(4, 3, 16, 16)
    >>> target = rand(4, 3, 16, 16)
    >>> _relative_average_spectral_error(preds, target)
    tensor(5326.40...)

    r   r   r   r   r1   )r   r   r3   r   r   r     _relative_average_spectral_errorg   s   

r4   Freturn_rmse_mapc                 C   r   )zWrapper for deprecated import.

    >>> from torch import rand
    >>> preds = rand(4, 3, 16, 16)
    >>> target = rand(4, 3, 16, 16)
    >>> _root_mean_squared_error_using_sliding_window(preds, target)
    tensor(0.4158)

    r   r   r   r   r1   r5   )r   r   r6   r   r   r    -_root_mean_squared_error_using_sliding_windowu   s   
r7   c                 C   r2   )zWrapper for deprecated import.

    >>> from torch import rand
    >>> preds = rand([16, 3, 16, 16])
    >>> target = rand([16, 3, 16, 16])
    >>> _spectral_angle_mapper(preds, target)
    tensor(0.5914)

    r   r   r   r   r   )r   r   r8   r   r   r    _spectral_angle_mapper   s   
r9   T      ?   {Gz?Q?gǺ?g48EG?ga4?g??g9EGr?relugaussian_kernelsigmakernel_sizek1k2betas	normalize)r?   simplec                 C   (   t dd t| |||||||||	|
dS )zWrapper for deprecated import.

    >>> from torch import rand
    >>> preds = rand([3, 3, 256, 256])
    >>> target = preds * 0.75
    >>> _multiscale_structural_similarity_index_measure(preds, target, data_range=1.0)
    tensor(0.9628)

    r   r   r   r   r@   rA   rB   r   r+   rC   rD   rE   rF   )r   r   rI   r   r   r    /_multiscale_structural_similarity_index_measure      
rJ   return_full_imagereturn_contrast_sensitivityc                 C   rH   )zWrapper for deprecated import.

    >>> import torch
    >>> preds = torch.rand([3, 3, 256, 256])
    >>> target = preds * 0.75
    >>> _structural_similarity_index_measure(preds, target)
    tensor(0.9219)

    r   r   r   r   r@   rA   rB   r   r+   rC   rD   rL   rM   )r   r   rN   r   r   r    $_structural_similarity_index_measure   rK   rO   r   )meanr   r   Nc                 C   s   t dd t| |dS )zWrapper for deprecated import.

    >>> from torch import rand
    >>> img = rand(5, 3, 28, 28)
    >>> _total_variation(img)
    tensor(7546.8018)

    r   r   r'   r   )r   r   rQ   r   r   r    _total_variation   s   
	rR   r;   r;   r:   r:   c                 C   s   t dd t| ||||dS )zWrapper for deprecated import.

    >>> import torch
    >>> preds = torch.rand([16, 1, 16, 16])
    >>> target = preds * 0.75
    >>> _universal_image_quality_index(preds, target)
    tensor(0.9216)

    r   r   r   r   rB   rA   r   )r   r   rU   r   r   r    _universal_image_quality_index   s   
rV   )r   r   )r#   r   )Nr*   r   N)r0   )r0   F)r   )	Tr:   r;   r   Nr<   r=   r>   r?   )	Tr:   r;   r   Nr<   r=   FF)r   )rS   rT   r   )/collections.abcr   typingr   r   torchr   typing_extensionsr   &torchmetrics.functional.image.d_lambdar   #torchmetrics.functional.image.ergasr   'torchmetrics.functional.image.gradientsr	   "torchmetrics.functional.image.psnrr
   "torchmetrics.functional.image.raser   %torchmetrics.functional.image.rmse_swr   !torchmetrics.functional.image.samr   "torchmetrics.functional.image.ssimr   r    torchmetrics.functional.image.tvr   !torchmetrics.functional.image.uqir   torchmetrics.utilities.printsr   intr!   floatr&   tupler)   r/   r4   boolr7   r9   rJ   rO   rR   rV   r   r   r   r    <module>   sR   




	



)	

&
