o
    .wiC!                     @   sL  d dl mZ d dlmZ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mZ d dlmZ d dlmZ d dlmZ G dd deZG dd deZG dd deZG dd deZ G dd deZ!G dd deZ"G dd de	Z#G dd deZ$G dd deZ%G d d! d!eZ&d"S )#    )Sequence)AnyOptionalUnion)Literal)SpectralDistortionIndex))ErrorRelativeGlobalDimensionlessSynthesis)PeakSignalNoiseRatio)RelativeAverageSpectralError)&RootMeanSquaredErrorUsingSlidingWindow)SpectralAngleMapper)*MultiScaleStructuralSimilarityIndexMeasure StructuralSimilarityIndexMeasure)TotalVariation)UniversalImageQualityIndex)_deprecated_root_import_classc                	       s<   e Zd ZdZ		ddeded dedd	f fd
dZ  ZS )*_ErrorRelativeGlobalDimensionlessSynthesiszWrapper for deprecated import.

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

       elementwise_meanratio	reductionr   sumnoneNkwargsreturnNc                    &   t dd t jd||d| d S )Nr   image)r   r    r   super__init__)selfr   r   r   	__class__r   [/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/torchmetrics/image/_deprecated.pyr!      s   
z3_ErrorRelativeGlobalDimensionlessSynthesis.__init__)r   r   )	__name__
__module____qualname____doc__floatr   r   r!   __classcell__r   r   r#   r%   r      s    r   c                       s   e Zd ZdZ										
d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 de	d deddf fddZ  ZS )+_MultiScaleStructuralSimilarityIndexMeasurea	  Wrapper for deprecated import.

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

    T         ?r   N{Gz?Q?gǺ?g48EG?ga4?g??g9EGr?relugaussian_kernelkernel_sizesigmar   r   
data_rangek1k2betas.	normalize)r2   simpleNr   r   c
                    4   t dd t jd|||||||||	d	|
 d S )Nr   r   )	r3   r4   r5   r   r6   r7   r8   r9   r:   r   r   )r"   r3   r4   r5   r   r6   r7   r8   r9   r:   r   r#   r   r%   r!   4      


z4_MultiScaleStructuralSimilarityIndexMeasure.__init__)	Tr-   r.   r   Nr/   r0   r1   r2   )r&   r'   r(   r)   boolr   intr   r*   r   r   tupler   r!   r+   r   r   r#   r%   r,   (   sD    
	
r,   c                       sp   e Zd ZdZ				d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
ddf fddZ  ZS )_PeakSignalNoiseRatiozWrapper for deprecated import.

    >>> from torch import tensor
    >>> psnr = _PeakSignalNoiseRatio()
    >>> preds = tensor([[0.0, 1.0], [2.0, 3.0]])
    >>> target = tensor([[3.0, 2.0], [1.0, 0.0]])
    >>> psnr(preds, target)
    tensor(2.5527)

    N      $@r   r6   baser   r   dim.r   r   c                    s*   t dd t jd||||d| d S )Nr	   r   )r6   rC   r   rD   r   r   )r"   r6   rC   r   rD   r   r#   r   r%   r!   \   s   
 z_PeakSignalNoiseRatio.__init__)NrB   r   N)r&   r'   r(   r)   r   r   r*   r@   r   r?   r   r!   r+   r   r   r#   r%   rA   P   s&    rA   c                       :   e Zd ZdZ	d	dedeeef ddf fddZ  Z	S )
_RelativeAverageSpectralErrorzWrapper for deprecated import.

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

       window_sizer   r   Nc                    $   t dd t jdd|i| d S )Nr
   r   rH   r   r   r"   rH   r   r#   r   r%   r!   t      
z&_RelativeAverageSpectralError.__init__rG   
r&   r'   r(   r)   r?   dictstrr   r!   r+   r   r   r#   r%   rF   h       
rF   c                       rE   )
'_RootMeanSquaredErrorUsingSlidingWindowzWrapper for deprecated import.

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

    rG   rH   r   r   Nc                    rI   )Nr   r   rH   r   r   rJ   r#   r   r%   r!      rK   z0_RootMeanSquaredErrorUsingSlidingWindow.__init__rL   rM   r   r   r#   r%   rQ   }   rP   rQ   c                       s6   e Zd ZdZ	d
ded deddf fdd	Z  ZS )_SpectralAngleMapperzWrapper for deprecated import.

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

    r   r   r   r   r   r   r   Nc                    rI   )Nr   r   r   r   r   r"   r   r   r#   r   r%   r!      rK   z_SpectralAngleMapper.__init__)r   r&   r'   r(   r)   r   r   r!   r+   r   r   r#   r%   rR      s    rR   c                	       s:   e Zd ZdZ	ddeded dedd	f fd
dZ  ZS )_SpectralDistortionIndexzWrapper for deprecated import.

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

       r   pr   rS   r   r   Nc                    r   )Nr   r   )rX   r   r   r   )r"   rX   r   r   r#   r   r%   r!      s   
z!_SpectralDistortionIndex.__init__)rW   r   )	r&   r'   r(   r)   r?   r   r   r!   r+   r   r   r#   r%   rV      s    rV   c                       s   e Zd ZdZ											d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dededdf fddZ  ZS )!_StructuralSimilarityIndexMeasurezWrapper for deprecated import.

    >>> import torch
    >>> preds = torch.rand([3, 3, 256, 256])
    >>> target = preds * 0.75
    >>> ssim = _StructuralSimilarityIndexMeasure(data_range=1.0)
    >>> ssim(preds, target)
    tensor(0.9219)

    Tr.   r-   r   Nr/   r0   Fr3   r5   r4   r   r   r6   r7   r8   return_full_imagereturn_contrast_sensitivityr   r   c
                    r<   )Nr   r   )	r3   r5   r4   r   r6   r7   r8   rZ   r[   r   r   )r"   r3   r5   r4   r   r6   r7   r8   rZ   r[   r   r#   r   r%   r!      r=   z*_StructuralSimilarityIndexMeasure.__init__)	Tr.   r-   r   Nr/   r0   FF)r&   r'   r(   r)   r>   r   r*   r   r?   r   r   r@   r   r!   r+   r   r   r#   r%   rY      sD    	
rY   c                       s4   e Zd ZdZd
ded deddf fdd	Z  ZS )_TotalVariationzWrapper for deprecated import.

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

    r   r   )meanr   r   Nr   r   Nc                    rI   )Nr   r   r   r   r   rT   r#   r   r%   r!      s   
z_TotalVariation.__init__)r   rU   r   r   r#   r%   r\      s    (
r\   c                       sJ   e Zd ZdZ			ddee dee ded d	ed
df
 fddZ	  Z
S )_UniversalImageQualityIndexzWrapper for deprecated import.

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

    r-   r-   r.   r.   r   r4   r5   r   r   r   r   Nc                    s(   t dd t jd|||d| d S )Nr   r   )r4   r5   r   r   r   )r"   r4   r5   r   r   r#   r   r%   r!      s   
z$_UniversalImageQualityIndex.__init__)r_   r`   r   )r&   r'   r(   r)   r   r?   r*   r   r   r!   r+   r   r   r#   r%   r^      s     r^   N)'collections.abcr   typingr   r   r   typing_extensionsr   torchmetrics.image.d_lambdar   torchmetrics.image.ergasr   torchmetrics.image.psnrr	   torchmetrics.image.raser
   torchmetrics.image.rmse_swr   torchmetrics.image.samr   torchmetrics.image.ssimr   r   torchmetrics.image.tvr   torchmetrics.image.uqir   torchmetrics.utilities.printsr   r   r,   rA   rF   rQ   rR   rV   rY   r\   r^   r   r   r   r%   <module>   s.    ((