code: def compute_dihedrals(self, v1, v2, v3):
      n1 = torch.cross(v1, v2)
      n2 = torch.cross(v2, v3)
      a = (n1 * n2).sum(dim=-1)
      b = torch.nan_to_num(
          (torch.cross(n1, n2) * v2).sum(dim=-1) / v2.norm(dim=1)
      )
      torsion = torch.nan_to_num(torch.atan2(b, a))
      return torsion
  
imports: import os.path
  import h5py
  import numpy
  import warnings
  from tqdm import tqdm
  import torch
  import torch.nn.functional
  from torch_geometric.data import Data
  from torch_geometric.data import InMemoryDataset
label_desc: Use image node_id 9 for calling the FOLDdataset obj's underlying member method code with example usage: obj.compute_dihedrals(v1, v2, v3) and returns: torsion