code: def partial_transform(self, traj):
          
          x = []
          for a in self.types:
              func = getattr(md, 'compute_%s' % a)
              _, y = func(traj)
  
              if self.sincos:
                  x.extend([np.sin(y), np.cos(y)])
              else:
                  x.append(y)
  
          return np.hstack(x)
docs: Featurize an MD trajectory into a vector space via calculation
          of dihedral (torsion) angles
  
          Parameters
          ----------
          traj : mdtraj.Trajectory
              A molecular dynamics trajectory to featurize.
  
          Returns
          -------
          features : np.ndarray, dtype=float, shape=(n_samples, n_features)
              A featurized trajectory is a 2D array of shape
              `(length_of_trajectory x n_features)` where each `features[i]`
              vector is computed by applying the featurization function
              to the `i`th snapshot of the input trajectory.
  
          See Also
          --------
          transform : simultaneously featurize a collection of MD trajectories