B
    ɒ\                 @   s4   d dl Z ddlmZ ddlmZ G dd deZdS )    N   )Distribution   )utilc                   s   e Zd Zd fdd	Zdd Zedd Zed	d
 Zedd Zedd Z	 fddZ
d fdd	Ze fddZe fddZ  ZS )Betar   r   c                sZ   t |}t |}t jddtj||d t || _t || _| j| j | _	d S )Nr   )nameaddress_suffix
torch_dist)
r   	to_tensorsuper__init__torchdistributionsr   _low_high_range)selfconcentration1concentration0lowhigh)	__class__ ]/global/project/projectdirs/dasrepo/etalumis/pyprob_master_mar20/pyprob/distributions/beta.pyr      s    

zBeta.__init__c             C   s   d | j| j| j| jS )Nz;Beta(concentration1:{}, concentration0:{}, low:{}, high:{}))formatr   r   r   r   )r   r   r   r   __repr__   s    zBeta.__repr__c             C   s   | j jS )N)_torch_distr   )r   r   r   r   r      s    zBeta.concentration1c             C   s   | j jS )N)r   r   )r   r   r   r   r      s    zBeta.concentration0c             C   s   | j S )N)r   )r   r   r   r   r      s    zBeta.lowc             C   s   | j S )N)r   )r   r   r   r   r      s    z	Beta.highc                s   | j t  | j  S )N)r   r   sampler   )r   )r   r   r   r   #   s    zBeta.sampleFc                s4   t  jt|| j | j dd}|r0t|S |S )NF)sum)r   log_probr   r
   r   r   r   r   )r   valuer   lp)r   r   r   r   &   s    "zBeta.log_probc                s   | j t j| j  S )N)r   r   meanr   )r   )r   r   r   r"   *   s    z	Beta.meanc                s   t  j| j | j S )N)r   variancer   )r   )r   r   r   r#   .   s    zBeta.variance)r   r   )F)__name__
__module____qualname__r   r   propertyr   r   r   r   r   r   r"   r#   __classcell__r   r   )r   r   r      s   r   )r    r   r   r   r   r   r   r   <module>   s   