code: def row_coordinates(self, X):
          
          utils.validation.check_is_fitted(self, 'V_')
  
          _, row_names, _, _ = util.make_labels_and_names(X)
  
          if isinstance(X, pd.SparseDataFrame):
              X = X.to_coo().astype(float)
          elif isinstance(X, pd.DataFrame):
              X = X.to_numpy()
  
          if self.copy:
              X = X.copy()
  
          # Normalise the rows so that they sum up to 1
          if isinstance(X, np.ndarray):
              X = X / X.sum(axis=1)[:, None]
          else:
              X = X / X.sum(axis=1)
  
          return pd.DataFrame(
              data=X @ sparse.diags(self.col_masses_.to_numpy() ** -0.5) @ self.V_.T,
              index=row_names
          )
docs: The row principal coordinates.