|
1 |
| -# The Clique-Picking Algorithm |
| 1 | +# Clique-Picking |
2 | 2 |
|
3 |
| -This repository countains multiple implementations of the Clique-Picking algorithm that we have proposed at AAAI 2021 [1] for counting the number of Markov equivalent DAGs in polynomial time. |
4 |
| -Moreover, we give implementations of the polynomial-time algorithm for uniformly sampling a DAG from a Markov Equivalence Class, which we refined in [2]. See also chapter 5 of my thesis [3]. |
| 3 | +This repository provides functionality for working with CPDAGs, which are graphs representing Markov equivalence classes (MEC) of DAGs common in causal discovery. Currently, it focuses mostly on algorithms for counting, sampling and listing the DAGs in the MEC represented by a given CPDAG based on my [PhD thesis](https://mwien.github.io/thesis.pdf). |
5 | 4 |
|
6 |
| -1. Marcel Wienöbst, Max Bannach, and Maciej Liśkiewicz: *Polynomial-Time Algorithms for Counting and Sampling Markov Equivalent DAGs* (AAAI 2021) [arXiv version](https://arxiv.org/abs/2012.09679) |
7 |
| -2. Marcel Wienöbst, Max Bannach, and Maciej Liśkiewicz: *Polynomial-Time Algorithms for Counting and Sampling Markov Equivalent DAGs with Applications* [(JMLR)](https://www.jmlr.org/papers/v24/22-0495.html) |
8 |
| -3. Marcel Wienöbst: *Algorithms for Markov Equivalence* [(PhD Thesis)](https://mwien.github.io/thesis.pdf) |
| 5 | +The algorithms are implemented in Rust and exposed via an Python wrapper available as Pypi package ```cliquepicking```. An R wrapper is planned. |
| 6 | + |
| 7 | +## Installation |
| 8 | + |
| 9 | +The python package can be installed with |
| 10 | +``` |
| 11 | +pip install cliquepicking |
| 12 | +``` |
9 | 13 |
|
10 |
| -## Implementations |
| 14 | +For more detailed documentation, see the README in the ```cliquepicking_python``` folder. |
11 | 15 |
|
12 |
| -We provide the following implementations: |
| 16 | +## Roadmap |
13 | 17 |
|
14 |
| -- ```aaai_experiments/``` contains the original C++ implementation and experiments from the AAAI 2021 conference paper (only counting is implemented here) |
15 |
| -- ```cliquepicking_julia/``` contains the subsequent Julia code additionally provides a sampling algorithm |
16 |
| -- ```cliquepicking_rs/``` contains a recent Rust implementation for counting and sampling, which is cleaner and slightly more efficient (worst-case n^3) |
17 |
| -- ```cliquepicking_python/``` contains a Python wrapper for the Rust implementation. You can install and use the Python implementation easily via ```pip install cliquepicking```. |
| 18 | +The goal is to implement further algorithms from [3], such as those for MPDAGs. Feature requests are welcome. |
| 19 | + |
| 20 | +## References |
| 21 | +The repository contains an implementation of the Clique-Picking algorithm proposed at AAAI 2021 [1] for counting the number of Markov equivalent DAGs in polynomial time. |
| 22 | +Moreover, it provides implementations of the polynomial-time algorithm for uniformly sampling a DAG from a Markov Equivalence Class, which were refined in [2]. See also Chapter 5 of [3]. |
| 23 | + |
| 24 | +1. Marcel Wienöbst, Max Bannach, and Maciej Liśkiewicz: *Polynomial-Time Algorithms for Counting and Sampling Markov Equivalent DAGs* (AAAI 2021) [arXiv version](https://arxiv.org/abs/2012.09679) |
| 25 | +2. Marcel Wienöbst, Max Bannach, and Maciej Liśkiewicz: *Polynomial-Time Algorithms for Counting and Sampling Markov Equivalent DAGs with Applications* [(JMLR)](https://www.jmlr.org/papers/v24/22-0495.html) |
| 26 | +3. Marcel Wienöbst: *Algorithms for Markov Equivalence* [(PhD Thesis)](https://mwien.github.io/thesis.pdf) |
18 | 27 |
|
19 |
| -Brief examples of how to install and use the implementations are given in the subdirectories. |
| 28 | +## Prototypes |
| 29 | +The prototypes directory contains code I wrote in the context of the papers [1] and [2], which is not maintained anymore. |
0 commit comments