code: def dimension(self):
          
          if self.dim > -1:
              return self.dim
          d = None
          if self.dim != -1 and not self._estimated:  # fixed parametrization
              d = self.dim
          elif self._estimated:  # parametrization finished. Dimension is known
              dim = len(self.eigenvalues)
              if self.var_cutoff < 1.0:  # if subspace_variance, reduce the output dimension if needed
                  dim = min(dim, np.searchsorted(self.cumvar, self.var_cutoff) + 1)
              d = dim
          elif self.var_cutoff == 1.0:  # We only know that all dimensions are wanted, so return input dim
              d = self.data_producer.dimension()
          else:  # We know nothing. Give up
              raise RuntimeError('Requested dimension, but the dimension depends on the cumulative variance and the '
                                 'transformer has not yet been estimated. Call estimate() before.')
          return d
docs: output dimension