def __init__(self, outputs, inputs, schema, rng):
        """Initialize the CGpm.

        Parameters
        ----------
        outputs : list<int>
            List of endogenous variables whose joint distribution is modeled by
            the CGpm. The CGpm is required to simulate and evaluate the log
            density of an arbitrary susbet of output variables, by marginalizing
            and/or conditioning on another (disjoint) subset of output
            variables.
        inputs : list<int>, optional
            List of exogenous variables unmodeled by the CGpm which are needed
            on a per-row basis. A full realization of all inputs (if any)
            is required for each simulate and logpdf query.
        schema : **kwargs
            An arbitrary data structure used by the CGpm to initialize itself.
            Often contains information about hyperparameters, parameters,
            sufficient statistics, configuration settings, or metadata about
            the input variables.
        rng : numpy.random.RandomState
            Source of entropy.
        """
        raise NotImplementedError