o
    vžÄi>  ã                   @   s8   d Z ddlmZ ddlZG dd„ dƒZG dd„ dƒZdS )zƒ
Conversion from the TrigFlow (sCM paper) parameterization trigflow_t to
the four c_xxx scaling coefficients as in EDM fomulation.
é    )ÚTupleNc                   @   óD   e Zd Zd
defdd„Zdejdeejejejejf fdd„Zd	S )ÚEDM_sCMWrapperç      ð?Ú
sigma_datac                 C   ó
   || _ d S ©N©r   ©Úselfr   © r   úZ/data/cameron/vidgen/cosmos-policy/cosmos_policy/_src/predict2/modules/denoiser_scaling.pyÚ__init__   ó   
zEDM_sCMWrapper.__init__Ú
trigflow_tÚreturnc                 C   s|   |j }| tj¡}t |¡| j }| jt |¡ }| jt |¡ }t |¡}d| 	¡  }| |¡| |¡| |¡| |¡fS )Ng      Ð?)
ÚdtypeÚtoÚtorchÚfloat64Útanr   ÚcosÚsinÚ	ones_likeÚlog)r   r   r   ÚsigmaÚc_skipÚc_outÚc_inÚc_noiser   r   r   Ú__call__    s   
$zEDM_sCMWrapper.__call__N©r   ©	Ú__name__Ú
__module__Ú__qualname__Úfloatr   r   ÚTensorr   r    r   r   r   r   r      ó    ,r   c                   @   r   )ÚRectifiedFlow_sCMWrapperr   r   c                 C   r   r   r	   r
   r   r   r   r   /   r   z!RectifiedFlow_sCMWrapper.__init__r   r   c                 C   sÌ   |j }| tj¡}| jt |¡| jt |¡   }| j t |¡ t |¡| jt |¡   }| jt |¡| jt |¡   }| jt |¡ t |¡| jt |¡   }| |¡| |¡| |¡| |¡fS r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r    2   s    *ÿ (ÿ$z!RectifiedFlow_sCMWrapper.__call__Nr!   r"   r   r   r   r   r)   .   r(   r)   )Ú__doc__Útypingr   r   r   r)   r   r   r   r   Ú<module>   s
   