def __init__(self, ci_estimator: Callable, alpha: float=0.05, init_graph: Union[(nx.Graph, ADMG)]=None, fixed_edges: nx.Graph=None, max_cond_set_size: int=None, **ci_estimator_kwargs):
    'Peter and Clarke (PC) algorithm for causal discovery.\n\n        Assumes causal sufficiency, that is, all confounders in the\n        causal graph are observed variables.\n\n        Parameters\n        ----------\n        ci_estimator : Callable\n            The conditional independence test function. The arguments of the estimator should\n            be data, node, node to compare, conditioning set of nodes, and any additional\n            keyword arguments.\n        alpha : float, optional\n            The significance level for the conditional independence test, by default 0.05.\n        init_graph : nx.Graph | ADMG, optional\n            An initialized graph. If ``None``, then will initialize PC using a\n            complete graph. By default None.\n        fixed_edges : nx.Graph, optional\n            An undirected graph with fixed edges. If ``None``, then will initialize PC using a\n            complete graph. By default None.\n        max_cond_set_size : int, optional\n            Maximum size of the conditioning set, by default None. Used to limit\n            the computation spent on the algorithm.\n        ci_estimator_kwargs : dict\n            Keyword arguments for the ``ci_estimator`` function.\n\n        Attributes\n        ----------\n        graph_ : PAG\n            The graph discovered.\n        separating_sets_ : dict\n            The dictionary of separating sets, where it is a nested dictionary from\n            the variable name to the variable it is being compared to the set of\n            variables in the graph that separate the two.\n        '
    super().__init__(ci_estimator, alpha, init_graph, fixed_edges, max_cond_set_size, **ci_estimator_kwargs)
Peter and Clarke (PC) algorithm for causal discovery.

Assumes causal sufficiency, that is, all confounders in the
causal graph are observed variables.

Parameters
----------
ci_estimator : Callable
    The conditional independence test function. The arguments of the estimator should
    be data, node, node to compare, conditioning set of nodes, and any additional
    keyword arguments.
alpha : float, optional
    The significance level for the conditional independence test, by default 0.05.
init_graph : nx.Graph | ADMG, optional
    An initialized graph. If ``None``, then will initialize PC using a
    complete graph. By default None.
fixed_edges : nx.Graph, optional
    An undirected graph with fixed edges. If ``None``, then will initialize PC using a
    complete graph. By default None.
max_cond_set_size : int, optional
    Maximum size of the conditioning set, by default None. Used to limit
    the computation spent on the algorithm.
ci_estimator_kwargs : dict
    Keyword arguments for the ``ci_estimator`` function.

Attributes
----------
graph_ : PAG
    The graph discovered.
separating_sets_ : dict
    The dictionary of separating sets, where it is a nested dictionary from
    the variable name to the variable it is being compared to the set of
    variables in the graph that separate the two.
def __init__(self, ci_estimator: Callable, alpha: float=0.05, init_graph: Union[(nx.Graph, ADMG)]=None, fixed_edges: nx.Graph=None, max_cond_set_size: int=None, **ci_estimator_kwargs):
    'Peter and Clarke (PC) algorithm for causal discovery.\n\n        Assumes causal sufficiency, that is, all confounders in the\n        causal graph are observed variables.\n\n        Parameters\n        ----------\n        ci_estimator : Callable\n            The conditional independence test function. The arguments of the estimator should\n            be data, node, node to compare, conditioning set of nodes, and any additional\n            keyword arguments.\n        alpha : float, optional\n            The significance level for the conditional independence test, by default 0.05.\n        init_graph : nx.Graph | ADMG, optional\n            An initialized graph. If ``None``, then will initialize PC using a\n            complete graph. By default None.\n        fixed_edges : nx.Graph, optional\n            An undirected graph with fixed edges. If ``None``, then will initialize PC using a\n            complete graph. By default None.\n        max_cond_set_size : int, optional\n            Maximum size of the conditioning set, by default None. Used to limit\n            the computation spent on the algorithm.\n        ci_estimator_kwargs : dict\n            Keyword arguments for the ``ci_estimator`` function.\n\n        Attributes\n        ----------\n        graph_ : PAG\n            The graph discovered.\n        separating_sets_ : dict\n            The dictionary of separating sets, where it is a nested dictionary from\n            the variable name to the variable it is being compared to the set of\n            variables in the graph that separate the two.\n        '
    super().__init__(ci_estimator, alpha, init_graph, fixed_edges, max_cond_set_size, **ci_estimator_kwargs)