code: def transform(self, data=None):
      if self.C is None:
          raise RuntimeError("Fit the data model first.")
      if data is None:
          return np.dot(self.data, self.C)
      return np.dot(data, self.C)
  
file_path: hypertools/hypertools/_externals/ppca.py
imports: import os
  import numpy
  from scipy.linalg import orth
label_desc: Use image node_id 4 for calling the PPCA obj's underlying member method code with example usage: obj.transform(data) and returns: np, np