
    h<                     n    S SK rS SKJr  S SKJrJrJr  S SKr	S SK
r
S SKJrJr  S SKJr   " S S\5      rg)    N)Path)CallableOptionalUnion)download_urlverify_str_arg)VisionDatasetc                      ^  \ rS rSrSrSr    SS\\\4   S\	\   S\
S\S	\	\   S
S4U 4S jjjrS\
S
\R                  4S jrS
\
4S jrS
\4S jrSS jrSrU =r$ )MovingMNIST   a  `MovingMNIST <http://www.cs.toronto.edu/~nitish/unsupervised_video/>`_ Dataset.

Args:
    root (str or ``pathlib.Path``): Root directory of dataset where ``MovingMNIST/mnist_test_seq.npy`` exists.
    split (string, optional): The dataset split, supports ``None`` (default), ``"train"`` and ``"test"``.
        If ``split=None``, the full data is returned.
    split_ratio (int, optional): The split ratio of number of frames. If ``split="train"``, the first split
        frames ``data[:, :split_ratio]`` is returned. If ``split="test"``, the last split frames ``data[:, split_ratio:]``
        is returned. If ``split=None``, this parameter is ignored and the all frames data is returned.
    download (bool, optional): If true, downloads the dataset from the internet and
        puts it in root directory. If dataset is already downloaded, it is not
        downloaded again.
    transform (callable, optional): A function/transform that takes in a torch Tensor
        and returns a transformed version. E.g, ``transforms.RandomCrop``
zGhttp://www.cs.toronto.edu/~nitish/unsupervised_video/mnist_test_seq.npyNrootsplitsplit_ratiodownload	transformreturnc                   > [         TU ]  XS9  [        R                  R	                  U R
                  U R                  R                  5      U l        U R                  R                  S5      S   U l        Ub  [        USS5        X l
        [        U[        5      (       d  [        S[!        U5       35      eSUs=::  a  S::  d  O  [#        S	U S
35      eX0l        U(       a  U R'                  5         U R)                  5       (       d  [+        S5      e[,        R.                  " [0        R2                  " [        R                  R	                  U R                  U R                  5      5      5      nU R                  S:X  a  US U R$                   nOU R                  S:X  a  X`R$                  S  nUR5                  SS5      R7                  S5      R9                  5       U l        g )N)r   /r   )traintestz,`split_ratio` should be an integer, but got       z:`split_ratio` should be `1 <= split_ratio <= 19`, but got z	 instead.z<Dataset not found. You can use download=True to download it.r   r   r      )super__init__ospathjoinr   	__class____name___base_folder_URLr   	_filenamer   
isinstanceint	TypeErrortype
ValueErrorr   r   _check_existsRuntimeErrortorch
from_numpynpload	transpose	unsqueeze
contiguousdata)selfr   r   r   r   r   r3   r    s          Y/var/www/auris/envauris/lib/python3.13/site-packages/torchvision/datasets/moving_mnist.pyr   MovingMNIST.__init__   sx    	3GGLLDNN4K4KL-b15'+<=
+s++J4P[K\J]^__{(b(YZeYffopqq&MMO!!##]^^T5F5F(W XY:: *$**+DZZ6!((*+DNN1a(2215@@B	    idxc                 `    U R                   U   nU R                  b  U R                  U5      nU$ )z
Args:
    idx (int): Index
Returns:
    torch.Tensor: Video frames (torch Tensor[T, C, H, W]). The `T` is the number of frames.
)r3   r   )r4   r8   r3   s      r5   __getitem__MovingMNIST.__getitem__B   s.     yy~>>%>>$'Dr7   c                 ,    [        U R                  5      $ N)lenr3   r4   s    r5   __len__MovingMNIST.__len__O   s    499~r7   c                     [         R                  R                  [         R                  R                  U R                  U R
                  5      5      $ r=   )r   r   existsr   r"   r$   r?   s    r5   r*   MovingMNIST._check_existsR   s.    ww~~bggll4+<+<dnnMNNr7   c                     U R                  5       (       a  g [        U R                  U R                  U R                  SS9  g )N be083ec986bfe91a449d63653c411eb2)urlr   filenamemd5)r*   r   r#   r"   r$   r?   s    r5   r   MovingMNIST.downloadU   s6    		""^^2		
r7   )r"   r$   r3   r   r   )N
   FN)r   N)r!   
__module____qualname____firstlineno____doc__r#   r   strr   r   r&   boolr   r   r,   Tensorr:   r@   r*   r   __static_attributes____classcell__)r    s   @r5   r   r      s      UD
  $(,"CCI"C }"C 	"C
 "C H%"C 
"C "CHs u||  Ot O	
 	
r7   r   )os.pathr   pathlibr   typingr   r   r   numpyr.   r,   torchvision.datasets.utilsr   r   torchvision.datasets.visionr	   r    r7   r5   <module>r\      s+      , ,   C 5S
- S
r7   