code: def from_data(
      cls,
      data: Union[List[int], List[float], torch.Tensor],
  ) -> Self:
      if not isinstance(data, torch.Tensor):
          data = torch.tensor(data)
      data = data.to(torch.float)
  
      return cls(
          mean=data.mean().item(),
          std=data.std().item(),
          min=data.min().item(),
          quantile25=data.quantile(0.25).item(),
          median=data.median().item(),
          quantile75=data.quantile(0.75).item(),
          max=data.max().item(),
      )
  
file_path: pytorch_geometric/torch_geometric/data/summary.py
imports: from collections import defaultdict
  from dataclasses import dataclass
  from typing import Dict, List, Optional, Union
  import torch
  from tqdm import tqdm
  from typing_extensions import Self
  from torch_geometric.data import Dataset, HeteroData
  from torch_geometric.typing import EdgeType, NodeType
label_desc: Use image node_id 1 for calling the Stats obj's underlying member method code with example usage: obj.from_data(cls, data) and returns: cls