docstr: Performs the two-sample Cramer-von Mises test(s), computing the p-value and test statistic per feature.
  
  Parameters
  ----------
  x_ref
      Reference instances to compare distribution with.
  x
      Batch of instances.
  
  Returns
  -------
  Feature level p-values and CVM statistics.
docstr_tok: ["Performs","the","two-sample","Cramer-von","Mises","test","(","s",")",",","computing","the","p-value","and","test","statistic","per","feature",".","Parameters","--","--","--","--","--","x_ref","Reference","instances","to","compare","distribution","with",".","x","Batch","of","instances",".","Returns","--","--","--","-","Feature","level","p-values","and","CVM","statistics","."]
code: def feature_score(
      self, x_ref: np.ndarray, x: np.ndarray
  ) -> Tuple[np.ndarray, np.ndarray]:
      """
      Performs the two-sample Cramer-von Mises test(s), computing the p-value and test statistic per feature.
  
      Parameters
      ----------
      x_ref
          Reference instances to compare distribution with.
      x
          Batch of instances.
  
      Returns
      -------
      Feature level p-values and CVM statistics.
      """
      x = x.reshape(x.shape[0], -1)
      x_ref = x_ref.reshape(x_ref.shape[0], -1)
      p_val = np.zeros(self.n_features, dtype=np.float32)
      dist = np.zeros_like(p_val)
      for f in range(self.n_features):
          result = cramervonmises_2samp(
              x_ref[:, f], x[:, f], method="auto"
          )
          p_val[f], dist[f] = result.pvalue, result.statistic
      return p_val, dist
  
imports: import numpy
  from typing import Callable, Dict, Tuple, Optional, Union
  from alibi_detect.cd.base import BaseUnivariateDrift
label_desc: Use image node_id 2 for calling the CVMDrift obj's underlying member method code with example usage: obj.feature_score(x_ref, x) and returns: p_val,  dist