B
    áÉ’\à	  ã               @   sL   d dl Z G dd„ deƒZdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ ZdS )é    Nc               @   sV   e Zd ZdgZedd„ ƒZdd„ Zdd„ Zdd	„ Zd
d„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTensorÚ_tabc             C   s.   t j t jj||¡}tƒ }| ||| ¡ |S )N)ÚflatbuffersÚencodeÚGetÚpackerÚuoffsetr   ÚInit)ÚclsÚbufÚoffsetÚnÚx© r   úU/global/project/projectdirs/dasrepo/etalumis/pyprob_master_mar20/pyprob/ppx/Tensor.pyÚGetRootAsTensor
   s    zTensor.GetRootAsTensorc             C   s   t j ||¡| _d S )N)r   ÚtableÚTabler   )Úselfr   Úposr   r   r   r	      s    zTensor.Initc             C   sR   t jj | j d¡¡}|dkrN| j |¡}| j t jj|t jj |d ¡ ¡S dS )Né   r   é   )	r   Únumber_typesÚUOffsetTFlagsÚpy_typer   ÚOffsetÚVectorr   ÚFloat64Flags)r   ÚjÚoÚar   r   r   ÚData   s
    $zTensor.Datac             C   s4   t jj | j d¡¡}|dkr0| j t jj|¡S dS )Nr   r   )r   r   r   r   r   r   ÚGetVectorAsNumpyr   )r   r   r   r   r   ÚDataAsNumpy   s    zTensor.DataAsNumpyc             C   s.   t jj | j d¡¡}|dkr*| j |¡S dS )Nr   r   )r   r   r   r   r   r   Ú	VectorLen)r   r   r   r   r   Ú
DataLength%   s    zTensor.DataLengthc             C   sR   t jj | j d¡¡}|dkrN| j |¡}| j t jj|t jj |d ¡ ¡S dS )Né   r   r   )	r   r   r   r   r   r   r   r   Ú
Int32Flags)r   r   r   r    r   r   r   ÚShape,   s
    $zTensor.Shapec             C   s4   t jj | j d¡¡}|dkr0| j t jj|¡S dS )Nr&   r   )r   r   r   r   r   r   r"   r'   )r   r   r   r   r   ÚShapeAsNumpy4   s    zTensor.ShapeAsNumpyc             C   s.   t jj | j d¡¡}|dkr*| j |¡S dS )Nr&   r   )r   r   r   r   r   r   r$   )r   r   r   r   r   ÚShapeLength;   s    zTensor.ShapeLengthN)Ú__name__Ú
__module__Ú__qualname__Ú	__slots__Úclassmethodr   r	   r!   r#   r%   r(   r)   r*   r   r   r   r   r      s   r   c             C   s   |   d¡ d S )Né   )ÚStartObject)Úbuilderr   r   r   ÚTensorStartA   s    r3   c             C   s   |   dtjj |¡d¡ d S )Nr   )ÚPrependUOffsetTRelativeSlotr   r   r   r   )r2   Údatar   r   r   ÚTensorAddDataB   s    r6   c             C   s   |   d|d¡S )Nr   )ÚStartVector)r2   ÚnumElemsr   r   r   ÚTensorStartDataVectorC   s    r9   c             C   s   |   dtjj |¡d¡ d S )Né   r   )r4   r   r   r   r   )r2   Úshaper   r   r   ÚTensorAddShapeD   s    r<   c             C   s   |   d|d¡S )Nr   )r7   )r2   r8   r   r   r   ÚTensorStartShapeVectorE   s    r=   c             C   s   |   ¡ S )N)Ú	EndObject)r2   r   r   r   Ú	TensorEndF   s    r?   )	r   Úobjectr   r3   r6   r9   r<   r=   r?   r   r   r   r   Ú<module>   s   :