class_docstr: Clips indexer for the test set of the ShanghaiTech Campus dataset.
  
  The train and test subsets of the ShanghaiTech dataset use different file formats, so separate
  clips indexer implementations are needed.
class_docstr_tok: ["Clips","indexer","for","the","test","set","of","the","ShanghaiTech","Campus","dataset",".","The","train","and","test","subsets","of","the","ShanghaiTech","dataset","use","different","file","formats",",","so","separate","clips","indexer","implementations","are","needed","."]
docstr: Retrieve the number of frames in each video.
docstr_tok: ["Retrieve","the","number","of","frames","in","each","video","."]
code: def _compute_frame_pts(self) -> None:
      """Retrieve the number of frames in each video."""
      self.video_pts = []
      for video_path in self.video_paths:
          n_frames = len(list(Path(video_path).glob("*.jpg")))
          self.video_pts.append(Tensor(range(n_frames)))
  
      self.video_fps = [None] * len(self.video_paths)
  
imports: from __future__ import annotations
  import logging
  from pathlib import Path
  from shutil import move
  from typing import Any
  import albumentations
  import numpy
  import pandas
  import torch
  from pandas import DataFrame
  from torch import Tensor
  from anomalib.data.base import AnomalibVideoDataModule, AnomalibVideoDataset
  from anomalib.data.base.video import VideoTargetFrame
  from anomalib.data.task_type import TaskType
  from anomalib.data.utils import DownloadInfo, InputNormalizationMethod, Split, ValSplitMode, download_and_extract, get_transforms, read_image
  from anomalib.data.utils.video import ClipsIndexer, convert_video
label_desc: Use image node_id 2 for calling the ShanghaiTechTestClipsIndexer obj's underlying member method code with example usage: obj._compute_frame_pts() without return types