Algorithm Introduction

Greedy relaxation of the sparsest permutation (GRaSP) algorithm 1.


from import grasp
G = grasp(X, score_func, depth, maxP, parameters)

# Visualization using pydot
from causallearn.utils.GraphUtils import GraphUtils
import matplotlib.image as mpimg
import matplotlib.pyplot as plt
import io

pyd = GraphUtils.to_pydot(G)
tmp_png = pyd.create_png(f="png")
fp = io.BytesIO(tmp_png)
img = mpimg.imread(fp, format='png')

Visualization using pydot is recommended (usage example). If specific label names are needed, please refer to this usage example (e.g., GraphUtils.to_pydot(G, labels=[“A”, “B”, “C”]).


X: numpy.ndarray, shape (n_samples, n_features). Data, where n_samples is the number of samples and n_features is the number of features.

score_func: The score function you would like to use, including (see score_functions.). Default: ‘local_score_BIC’.

maxP: Allowed maximum number of parents when searching the graph. Default: None.

parameters: Needed when using CV likelihood. Default: None.
  • parameters[‘kfold’]: k-fold cross validation.

  • parameters[‘lambda’]: regularization parameter.

  • parameters[‘dlabel’]: for variables with multi-dimensions, indicate which dimensions belong to the i-th variable.


  • G: learned general graph, where G.graph[j,i]=1 and G.graph[i,j]=-1 indicate i –> j; G.graph[i,j] = G.graph[j,i] = -1 indicates i — j.


Lam, W. Y., Andrews, B., & Ramsey, J. (2022, February). Greedy Relaxations of the Sparsest Permutation Algorithm. In The 38th Conference on Uncertainty in Artificial Intelligence.


Huang, B., Zhang, K., Lin, Y., Schölkopf, B., & Glymour, C. (2018, July). Generalized score functions for causal discovery. In Proceedings of the 24th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining (pp. 1551-1560).


Schwarz, G. (1978). Estimating the dimension of a model. The annals of statistics, 461-464.


Buntine, W. (1991). Theory refinement on Bayesian networks. In Uncertainty proceedings 1991 (pp. 52-60). Morgan Kaufmann.