Replies: 1 comment 5 replies
-
Hey @adam2392, thanks for writing all this down. I really like it. The only part I don't quite understand, what is the added benefit of: class CPDAG(MixedEdgeGraph):
def __init__(self, directed_data, undirected_data):
super().__init__([directed_data, undirected_data], edge_types=['directed', 'undirected'])
# API layer for users to work with the specific types of edges
def add_undirected_edge(self, u, v):
super().add_edge(u, v, edge_type='undirected')
...
class PAG(MixedEdgeGraph):
def __init__(self, directed_data, undirected_data, circular_data):
super().__init__([directed_data, undirected_data, circular_data], edge_types=['directed', 'undirected', 'circle'])
# API layer for users to work with the specific types of edges
def add_circle_endpoint(self, u, v):
super().add_edge(u, v, edge_type='circle') Is it really just the "customized" edge addition methods? FWIW, I think If you still think that there are use cases that cannot be satisfied by Unrelated to this, what does And finally curious what "converting all bidirected edges to unobserved confounders" in # convert G to a DAG by converting all bidirected edges to unobserved confounders
dag_G = mixed_edge_to_dag(G) concretely means. Thanks. |
Beta Was this translation helpful? Give feedback.
-
Discussion thread for the graph API. The proposed API is here.
Beta Was this translation helpful? Give feedback.
All reactions