Exposed public API for RSL-D
            learn_and_get_skeleton(ci_test, data, find_markov_boundary_matrix_fun=None)
    Learn the skeleton of a diamond-free graph using the RSL-D algorithm.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
                ci_test
             | 
            
                  Callable[[int, int, List[int], ndarray], bool]
             | 
            
               A conditional independence test function that takes in the indices of two variables and a list of variable indices as the conditioning set, and returns True if the two variables are independent given the conditioning set, and False otherwise.  | 
            required | 
                data_matrix
             | 
            
                  ndarray
             | 
            
               The data matrix with shape (num_samples, num_vars), where each column corresponds to a variable and each row corresponds to a sample.  | 
            required | 
Returns:
| Type | Description | 
|---|---|
                  Graph
             | 
            
               nx.Graph: A networkx graph representing the learned skeleton.  | 
          
Source code in rcd/rsl/rsl_d.py
              RSL-D implementation details
              Bases: _RSLBase
Implementation for the RSL-D algorithm for learning diamond-free graphs from i.i.d. samples.
This class is initialized with a conditional independence test function, which determines whether two variables are independent given another set of variables, using the data provided.
The class has a learn_and_get_skeleton function that takes in a data matrix (numpy array), where each column corresponds to a variable and each row corresponds to a sample, and returns a networkx graph representing the learned skeleton.
Source code in rcd/rsl/rsl_d.py
                
            __init__(ci_test, find_markov_boundary_matrix_fun=None)
    Initialize the RSL-D algorithm with the conditional independence test to use.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
                ci_test
             | 
            
                  Callable[[int, int, List[int], ndarray], bool]
             | 
            
               A conditional independence test function that takes in the indices of two variables and a list of variable indices as the conditioning set, and returns True if the two variables are independent given the conditioning set, and False otherwise.  | 
            required | 
                find_markov_boundary_matrix_fun
             | 
            
                  Callable[[ndarray], ndarray]
             | 
            
               A function to find the Markov boundary matrix. This function should take in a numpy array of data, and return a 2D numpy array, where the (i, j)th entry is True if the jth variable is in the Markov boundary of the ith variable, and False otherwise.  | 
            
                  None
             | 
          
Source code in rcd/rsl/rsl_d.py
              
            find_neighborhood(var)
    Find the neighborhood of a variable using Proposition 40.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
                var
             | 
            
                  int
             | 
            
               The variable whose neighborhood we want to find.  | 
            required | 
Returns:
| Type | Description | 
|---|---|
                  ndarray
             | 
            
               np.ndarray: 1D numpy array containing the variables in the neighborhood.  | 
          
Source code in rcd/rsl/rsl_d.py
              
            is_removable(var)
    Check whether a variable is removable using Theorem 39.
Parameters:
| Name | Type | Description | Default | 
|---|---|---|---|
                var
             | 
            
                  int
             | 
            
               The variable to check.  | 
            required | 
Returns:
| Name | Type | Description | 
|---|---|---|
bool |             
                  bool
             | 
            
               True if the variable is removable, False otherwise.  |