CausalDisco / gadjid

Adjustment Identification Distance: A gadjid for Causal Structure Learning
https://doi.org/10.48550/arXiv.2402.08616
Mozilla Public License 2.0
9 stars 0 forks source link

I-Specific Identification Distance for a given set of node pairs #7

Open Matyasch opened 8 months ago

Matyasch commented 8 months ago

Firstly, thank you for this great library!

The I-Specific Identification Distance given by Definition 5 in the paper inputs G_true, G_guess, and a set of node pairs S to be considered by the verifier. However, the current implementations of *_aid functions only input G_true and G_guess, and compute the distance for all pairs of distinct nodes. Is it possible to compute distances for a given set of pairs using the python interface? If not, are you planning to support it in the future?

sweichwald commented 8 months ago

Thank you for your interest!

Using the python interface of the current version v0.0.1, the adjustment distances can only be computed using all pairs of distinct nodes. Using rust, the distances can be computed for other sets of pairs of nodes combining functions provided in the crate. We plan on implementing a convenience wrapper for this in rust and to expose it in the python interface, too.

As there is a trade-off between allowing other (arbitrary?) sets of pairs of nodes and the potential to optimise and parallelise the implementation, our implementation may only offer two kinds of subsets:

Would that cover your intended use case? If not, we are very interested to hear if there are relevant scenarios where other (arbitrary?) sets of pairs of nodes are desirable, that we have overlooked :-)

Matyasch commented 8 months ago

Thank you for the quick reply. I think the first option, "specific nodes as treatment nodes", would cover my use case. I'm looking forward to future updates of this package.

sweichwald commented 1 week ago

Behind the scenes we are still evaluating how to best implement this (performance, clarity) and want to ensure extensibility and maintainability before including it in a future release.

Yet, since the proof of concept exists in #10, it is worth mentioning here that you can install that directly via something like pip install "git+https://github.com/CausalDisco/gadjid.git@custom_node_pairs", assuming the rust toolchain is available. See also the install alternatives. Please feel free to reach out if there are questions about this or perhaps experiences to share with using this :-)