code: def group_row_coordinates(self, X):
      if (X.index != self.row_contributions_.index).any():
          raise NotImplementedError(
              "Supplementary rows are not supported yet"
          )
  
      X = (X - X.mean()) / ((X - X.mean()) ** 2).sum() ** 0.5
      Z = pd.concat(
          (
              X[cols] / self[g].eigenvalues_[0] ** 0.5
              for g, cols in self.groups_.items()
          ),
          axis="columns",
      )
      M = np.full(len(X), 1 / len(X))
      U = self.svd_.U
      s = self.svd_.s
  
      def add_index(g, group_name):
          g.columns = pd.MultiIndex.from_tuples(
              [(group_name, col) for col in g.columns],
              names=("group", "component"),
          )
          return g
  
      return len(self.groups_) * pd.concat(
          [
              add_index(
                  g=(Z[g] @ Z[g].T)
                  @ (M[:, np.newaxis] ** (-0.5) * U * s**-1),
                  group_name=g,
              )
              for g, cols in self.groups_.items()
          ],
          axis="columns",
      )
  
imports: from __future__ import annotations
  import collections
  import altair
  import numpy
  import pandas
  import sklearn.utils
  from prince import pca, utils
label_desc: Use image node_id 7 for calling the MFA obj's underlying member method code with example usage: obj.group_row_coordinates(X) and returns: unknown, g