o
    zi                     @   sT   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
 G dd de
Zd	S )
    )CallableUnion)Module)vjp   )SDE)
ScoreModelc                       sH   e Zd ZdZ				d
deeef dedef fddZ	dd	 Z
  ZS )SLICz)
    Original implementation of SLIC
    Nmodelforward_modelsdec                    s$   t  j|f||d| || _d S )N)r   checkpoints_directory)super__init__r   )selfr
   r   r   r   hyperparameters	__class__ E/home/ubuntu/.local/lib/python3.10/site-packages/score_models/slic.pyr      s   
zSLIC.__init__c                 C   s*   t | j|\}}|| ||| d  S )zf
        See Legin et al. (2023), https://iopscience.iop.org/article/10.3847/2041-8213/acd645
        r   )r   r   score)r   txyy_hatvjp_funcr   r   r   
slic_score   s   zSLIC.slic_score)NNNN)__name__
__module____qualname____doc__r   strr   r   r   r   r   __classcell__r   r   r   r   r	      s    
r	   N)typingr   r   torch.nnr   
torch.funcr   r   r   score_modelr   r	   r   r   r   r   <module>   s    