code: def pandas_phik_compute(
      config: Settings, df: pd.DataFrame, summary: dict
  ) -> Optional[pd.DataFrame]:
      df_cols_dict = {i: list(df.columns).index(i) for i in df.columns}
  
      intcols = {
          key
          for key, value in summary.items()
          # DateTime currently excluded
          # In some use cases, it makes sense to convert it to interval
          # See https://github.com/KaveIO/PhiK/issues/7
          if value["type"] == "Numeric" and 1 < value["n_distinct"]
      }
  
      selcols = {
          key
          for key, value in summary.items()
          if value["type"] != "Unsupported"
          and 1
          < value["n_distinct"]
          <= config.categorical_maximum_correlation_distinct
      }
      selcols = selcols.union(intcols)
      selected_cols = sorted(selcols, key=lambda i: df_cols_dict[i])
  
      if len(selected_cols) <= 1:
          return None
  
      with warnings.catch_warnings():
          warnings.simplefilter("ignore")
          from phik import phik_matrix
  
          correlation = phik_matrix(
              df[selected_cols], interval_cols=list(intcols)
          )
  
      return correlation
  
file_path: ydata-profiling/src/ydata_profiling/model/pandas/correlations_pandas.py
imports: import itertools
  import warnings
  from typing import Callable, Optional
  import numpy
  import pandas
  from scipy import stats
  from ydata_profiling.config import Settings
  from ydata_profiling.model.correlations import Auto, Cramers, Kendall, Pearson, PhiK, Spearman
  from ydata_profiling.model.pandas.discretize_pandas import DiscretizationType, Discretizer
label_desc: Use image node_id 8 for calling a global function with example usage: pandas_phik_compute(config, df, summary) and returns: correlation, None