From 4977ab8baac4067350e684f17a7469c74489178e Mon Sep 17 00:00:00 2001
From: Circle Ci <circle@pywhy.com>
Date: Mon, 9 Dec 2024 06:11:53 +0000
Subject: [PATCH] doc updates [skip ci]

---
 .../auto_examples_python.zip                  | Bin 28722 -> 28722 bytes
 .../intro_causal_graphs.zip                   | Bin 22097 -> 22097 bytes
 .../inducing_path.zip                         | Bin 10236 -> 10236 bytes
 .../plot_timeseries_graphs.zip                | Bin 5390 -> 5390 bytes
 .../plot_mixed_edge_graph.zip                 | Bin 13774 -> 13774 bytes
 .../checking_validity_of_a_pag.zip            | Bin 9337 -> 9337 bytes
 .../auto_examples_jupyter.zip                 | Bin 38586 -> 38586 bytes
 ...aw_and_compare_graphs_with_same_layout.zip | Bin 6338 -> 6338 bytes
 .../sphx_glr_plot_mixed_edge_graph_001.png    | Bin 16160 -> 14497 bytes
 .../sphx_glr_plot_mixed_edge_graph_thumb.png  | Bin 10867 -> 11311 bytes
 .../intro/checking_validity_of_a_pag.rst.txt  |   6 ++--
 .../auto_examples/intro/inducing_path.rst.txt |   4 +--
 .../intro/intro_causal_graphs.rst.txt         |   8 ++---
 .../intro/sg_execution_times.rst.txt          |  16 +++++-----
 .../mixededge/plot_mixed_edge_graph.rst.txt   |   8 ++---
 .../mixededge/sg_execution_times.rst.txt      |   6 ++--
 ...nd_compare_graphs_with_same_layout.rst.txt |   4 +--
 .../plot_timeseries_graphs.rst.txt            |   4 +--
 .../visualization/sg_execution_times.rst.txt  |  10 +++---
 dev/_sources/sg_execution_times.rst.txt       |  28 ++++++++--------
 .../intro/checking_validity_of_a_pag.html     |   6 ++--
 dev/auto_examples/intro/inducing_path.html    |   4 +--
 .../intro/intro_causal_graphs.html            |   8 ++---
 .../intro/sg_execution_times.html             |  18 +++++------
 .../mixededge/plot_mixed_edge_graph.html      |   8 ++---
 .../mixededge/sg_execution_times.html         |   6 ++--
 ...w_and_compare_graphs_with_same_layout.html |   4 +--
 .../visualization/plot_timeseries_graphs.html |   4 +--
 .../visualization/sg_execution_times.html     |  10 +++---
 dev/searchindex.js                            |   2 +-
 dev/sg_execution_times.html                   |  30 +++++++++---------
 31 files changed, 97 insertions(+), 97 deletions(-)

diff --git a/dev/_downloads/07fcc19ba03226cd3d83d4e40ec44385/auto_examples_python.zip b/dev/_downloads/07fcc19ba03226cd3d83d4e40ec44385/auto_examples_python.zip
index 858fef440da7309dde30d501e0e178bfb180cc3a..588b2575d59d44b4b7970c25618a3a237edee590 100644
GIT binary patch
delta 117
zcmdn=fN|3UM&1B#W)=|!5J)oY+{nu*zzn1}OA4$|V@?4wj+iauV@?Dza$T#$m{Wm_
wSJ8c3U`BP?A$E}B$qsprV7evG9i(USxja9RmdWz@z95B@^Yc@{^tJpL0GjtG4*&oF

delta 117
zcmdn=fN|3UM&1B#W)=|!5C}5t*vQK%z#MGYu~|}Jg&K1Rka5Ip86PuHW^=A<l^Am<
zknt+IkBd1B$f!;`#14|0?2zXO(logx&mE*^^0_=eu(*7_FG$Da{QMM<hRN6RV*qkG
BCrJPR

diff --git a/dev/_downloads/10530a43ac11630eed6537826e6cfb1c/intro_causal_graphs.zip b/dev/_downloads/10530a43ac11630eed6537826e6cfb1c/intro_causal_graphs.zip
index 41e8e6335a66d8bfe8ea64958cf79d97871e33d7..acc12060b7c0e1125fc39feace60ca55a2de5251 100644
GIT binary patch
delta 49
zcmcb(hVkMWM&1B#W)=|!5J)oY+{n8~jXA}zbMq!OE`4U8z~ud*jv#@_%wc{2WBU%N

delta 49
zcmcb(hVkMWM&1B#W)=|!5C}Hx*vPv`jXA`yWAi38E`4U8z~ud*jv#@_%wc{2Ujz<k

diff --git a/dev/_downloads/12ba5a8584767889bb8e73507ddec9b8/inducing_path.zip b/dev/_downloads/12ba5a8584767889bb8e73507ddec9b8/inducing_path.zip
index 831b4d1ca4273a4d0df576d3fcdeff75472f3c81..d4e3d2a22dbbd3e3fa4e5620cf0f34272fd681d9 100644
GIT binary patch
delta 47
tcmez4|Hq#<z?+#xgaHJS3_CaSG7B&R>CM6d3F08e<T7<@Fug_H0{|_W4H5tV

delta 47
xcmez4|Hq#<z?+#xgaHJC3_CXRG7B&V8+L3K7Dy0h1`13rQ?~{QOx~jI0RSkI4A1}o

diff --git a/dev/_downloads/31332546815c10107083eb780f2415e1/plot_timeseries_graphs.zip b/dev/_downloads/31332546815c10107083eb780f2415e1/plot_timeseries_graphs.zip
index 1fdbef0c71dc9763110ab8da53069de862485736..73efb1297623101d3797b0ea65dc76d5aa4e9c17 100644
GIT binary patch
delta 47
xcmeCv>eJ#4@MdNaVE}<t!_JMoo7kDt3_CX;V&BNa3>27LCgK7Tn7mgc5C9!54S@gv

delta 47
tcmeCv>eJ#4@MdNaVE}<J!;X!-o7kCw^yWkC8+kyC$z>ugV0y1eAOILP4L<+?

diff --git a/dev/_downloads/57ddf7f10e7765791565f8e95db0ebe3/plot_mixed_edge_graph.zip b/dev/_downloads/57ddf7f10e7765791565f8e95db0ebe3/plot_mixed_edge_graph.zip
index 5fb8759a7311d444ddd02162cfc5614f2bce019f..67fa61b36db46737c5db46d8c6a71af6918d62e9 100644
GIT binary patch
delta 47
xcmX??eJ-0fz?+#xgaHH+4LdjT7Kkw?8Fp@N5Zfxp3>27bVd@MLm|SNX002Mf4dws<

delta 47
tcmX??eJ-0fz?+#xgaHJC3_CXR7Kkwe>CFvdTjfBE$rh&0V7ksU0027j4Ws}7

diff --git a/dev/_downloads/6486e11b2b08016e1da22d99fc87866e/checking_validity_of_a_pag.zip b/dev/_downloads/6486e11b2b08016e1da22d99fc87866e/checking_validity_of_a_pag.zip
index 50a23b8a367674698c09a836e5514a5167eb5c1d..b40573abc31edaf55e722f269bccb137d1360fe7 100644
GIT binary patch
delta 47
xcmezA@zaAhz?+#xgaHIn3_CaSF5qKMHSFBHflp1887MIMrm_b}V6uuzC;&zC4d?&>

delta 47
xcmezA@zaAhz?+#xgaHIX3_CXRF5qJhHSE~Dflp1887MIMrm_b}V6uuzC;&js4Ws}7

diff --git a/dev/_downloads/6f1e7a639e0699d6164445b55e6c116d/auto_examples_jupyter.zip b/dev/_downloads/6f1e7a639e0699d6164445b55e6c116d/auto_examples_jupyter.zip
index 2f07e3318b662d229c90c2aa3b63f7fcf2a1332e..4d5e43620fc40da4f7cbeb23c93746c570e88a6e 100644
GIT binary patch
delta 117
zcmdnBmTA{oCf)#VW)=|!5J)oY+{l|E&YWV{xw%A~PoFsz$Y^!b5@iO;Y~B>TR}L&v
zR8`N*oCXy6(!QSuBsF>46c>=D$$zJKfmBTPni>cepEorC%>Otw9i(A$^t5;Y$WJO7

delta 117
zcmdnBmTA{oCf)#VW)=|!5C}Hx*vOkA&KzRcvAIN?PoFsy$Y^!b5@ikoGB!o;l>>_u
zRn_w{hXF;twD0F(25OqTZHfy>)8xNXyg(`@drb`lX_-84Y5<u3acVk9!{q2`@c^F!
BDNq0a

diff --git a/dev/_downloads/f07f8c066c17b7e0cc44cf5f674bfc87/draw_and_compare_graphs_with_same_layout.zip b/dev/_downloads/f07f8c066c17b7e0cc44cf5f674bfc87/draw_and_compare_graphs_with_same_layout.zip
index b23eb2ed0fbfcbf47dcf33018f406a4b71cf1c83..9180c32fb979b6560d7dff4bfce75ee9b67f82e6 100644
GIT binary patch
delta 47
tcmX?Pc*u}9z?+#xgaHIn4LdjTHgGWm>CF?kig`hd$!ro~U^-qR82}(W47dOQ

delta 47
tcmX?Pc*u}9z?+#xgaHIX4LdgSHgGWm>CF?kig`hd$!ro~U^-qR82}p=40Heh

diff --git a/dev/_images/sphx_glr_plot_mixed_edge_graph_001.png b/dev/_images/sphx_glr_plot_mixed_edge_graph_001.png
index ad4c20804e1835ff9f0982768eb06a9ad567e625..8284dae58ea0730f7adf6a7a965ef215ac386dc0 100644
GIT binary patch
literal 14497
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
KWU_BqJo!I@8LbNd

literal 16160
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

diff --git a/dev/_images/sphx_glr_plot_mixed_edge_graph_thumb.png b/dev/_images/sphx_glr_plot_mixed_edge_graph_thumb.png
index 55940147cc1fb974f60cf3e81063a03da5aab5ae..b0643c4df32588037d86343b164038f3962786c6 100644
GIT binary patch
literal 11311
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

literal 10867
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

diff --git a/dev/_sources/auto_examples/intro/checking_validity_of_a_pag.rst.txt b/dev/_sources/auto_examples/intro/checking_validity_of_a_pag.rst.txt
index 9f2c7aba8..558427a5e 100644
--- a/dev/_sources/auto_examples/intro/checking_validity_of_a_pag.rst.txt
+++ b/dev/_sources/auto_examples/intro/checking_validity_of_a_pag.rst.txt
@@ -144,7 +144,7 @@ To check if the constructed PAG is a valid one in pywhy-graphs, we can simply do
  .. code-block:: none
 
     ConditioningSetSelection.PDS
-    Context(observed_variables={'G', 'L', 'S', 'PSH', 'I'}, latent_variables=set(), state_variables={}, init_graph=<networkx.classes.graph.Graph object at 0x769072db5890>, included_edges=<networkx.classes.graph.Graph object at 0x769072db5f90>, excluded_edges=<networkx.classes.graph.Graph object at 0x769072db63d0>, num_distributions=1, obs_distribution=True, intervention_targets=[], symmetric_diff_map={}, sigma_map={}, f_nodes=[], num_domains=1, domain_map={}, s_nodes=[])
+    Context(observed_variables={'L', 'PSH', 'I', 'G', 'S'}, latent_variables=set(), state_variables={}, init_graph=<networkx.classes.graph.Graph object at 0x7c948c635b50>, included_edges=<networkx.classes.graph.Graph object at 0x7c948c636250>, excluded_edges=<networkx.classes.graph.Graph object at 0x7c948c636690>, num_distributions=1, obs_distribution=True, intervention_targets=[], symmetric_diff_map={}, sigma_map={}, f_nodes=[], num_domains=1, domain_map={}, s_nodes=[])
     True
 
 
@@ -180,7 +180,7 @@ relationship. As such, the resulting graph is no longer a valid PAG.
  .. code-block:: none
 
     ConditioningSetSelection.PDS
-    Context(observed_variables={'G', 'L', 'S', 'PSH', 'I'}, latent_variables=set(), state_variables={}, init_graph=<networkx.classes.graph.Graph object at 0x769072dc9f90>, included_edges=<networkx.classes.graph.Graph object at 0x769072dca690>, excluded_edges=<networkx.classes.graph.Graph object at 0x769072dcaad0>, num_distributions=1, obs_distribution=True, intervention_targets=[], symmetric_diff_map={}, sigma_map={}, f_nodes=[], num_domains=1, domain_map={}, s_nodes=[])
+    Context(observed_variables={'L', 'PSH', 'I', 'G', 'S'}, latent_variables=set(), state_variables={}, init_graph=<networkx.classes.graph.Graph object at 0x7c948c649f50>, included_edges=<networkx.classes.graph.Graph object at 0x7c948c64a650>, excluded_edges=<networkx.classes.graph.Graph object at 0x7c948c64aa90>, num_distributions=1, obs_distribution=True, intervention_targets=[], symmetric_diff_map={}, sigma_map={}, f_nodes=[], num_domains=1, domain_map={}, s_nodes=[])
     False
 
 
@@ -195,7 +195,7 @@ References
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** (0 minutes 0.969 seconds)
+   **Total running time of the script:** (0 minutes 1.096 seconds)
 
 **Estimated memory usage:**  166 MB
 
diff --git a/dev/_sources/auto_examples/intro/inducing_path.rst.txt b/dev/_sources/auto_examples/intro/inducing_path.rst.txt
index 08b33da99..dceab4cd9 100644
--- a/dev/_sources/auto_examples/intro/inducing_path.rst.txt
+++ b/dev/_sources/auto_examples/intro/inducing_path.rst.txt
@@ -241,9 +241,9 @@ References
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** (0 minutes 0.949 seconds)
+   **Total running time of the script:** (0 minutes 1.159 seconds)
 
-**Estimated memory usage:**  165 MB
+**Estimated memory usage:**  164 MB
 
 
 .. _sphx_glr_download_auto_examples_intro_inducing_path.py:
diff --git a/dev/_sources/auto_examples/intro/intro_causal_graphs.rst.txt b/dev/_sources/auto_examples/intro/intro_causal_graphs.rst.txt
index f32663faf..b8b937b44 100644
--- a/dev/_sources/auto_examples/intro/intro_causal_graphs.rst.txt
+++ b/dev/_sources/auto_examples/intro/intro_causal_graphs.rst.txt
@@ -169,7 +169,7 @@ Here, we will simulate some data to understand causal graphs in the context of S
 
  .. code-block:: none
 
-
    Fitting causal models:   0%|          | 0/5 [00:00<?, ?it/s]
    Fitting causal mechanism of node x:   0%|          | 0/5 [00:00<?, ?it/s]
    Fitting causal mechanism of node y:   0%|          | 0/5 [00:00<?, ?it/s]
    Fitting causal mechanism of node z:   0%|          | 0/5 [00:00<?, ?it/s]
    Fitting causal mechanism of node w:   0%|          | 0/5 [00:00<?, ?it/s]
    Fitting causal mechanism of node xy:   0%|          | 0/5 [00:00<?, ?it/s]
    Fitting causal mechanism of node xy: 100%|██████████| 5/5 [00:00<00:00, 900.30it/s]
+
    Fitting causal models:   0%|          | 0/5 [00:00<?, ?it/s]
    Fitting causal mechanism of node x:   0%|          | 0/5 [00:00<?, ?it/s]
    Fitting causal mechanism of node y:   0%|          | 0/5 [00:00<?, ?it/s]
    Fitting causal mechanism of node z:   0%|          | 0/5 [00:00<?, ?it/s]
    Fitting causal mechanism of node w:   0%|          | 0/5 [00:00<?, ?it/s]
    Fitting causal mechanism of node xy:   0%|          | 0/5 [00:00<?, ?it/s]
    Fitting causal mechanism of node xy: 100%|██████████| 5/5 [00:00<00:00, 881.75it/s]
        z  xy  w  x  y
     0  1   1  1  1  1
     1  1   1  2  2  3
@@ -183,7 +183,7 @@ Here, we will simulate some data to understand causal graphs in the context of S
     y     [1, 3, 2, 0]
     dtype: object
 
-    <graphviz.graphs.Digraph object at 0x768fb1266e10>
+    <graphviz.graphs.Digraph object at 0x7c93ca895490>
 
 
 
@@ -427,9 +427,9 @@ References
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** (0 minutes 2.086 seconds)
+   **Total running time of the script:** (0 minutes 2.335 seconds)
 
-**Estimated memory usage:**  250 MB
+**Estimated memory usage:**  248 MB
 
 
 .. _sphx_glr_download_auto_examples_intro_intro_causal_graphs.py:
diff --git a/dev/_sources/auto_examples/intro/sg_execution_times.rst.txt b/dev/_sources/auto_examples/intro/sg_execution_times.rst.txt
index 9febb076f..41fa3f1b2 100644
--- a/dev/_sources/auto_examples/intro/sg_execution_times.rst.txt
+++ b/dev/_sources/auto_examples/intro/sg_execution_times.rst.txt
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:04.004** total execution time for 3 files **from auto_examples/intro**:
+**00:04.590** total execution time for 3 files **from auto_examples/intro**:
 
 .. container::
 
@@ -33,11 +33,11 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_auto_examples_intro_intro_causal_graphs.py` (``intro_causal_graphs.py``)
-     - 00:02.086
-     - 249.6
-   * - :ref:`sphx_glr_auto_examples_intro_checking_validity_of_a_pag.py` (``checking_validity_of_a_pag.py``)
-     - 00:00.969
-     - 166.3
+     - 00:02.335
+     - 248.3
    * - :ref:`sphx_glr_auto_examples_intro_inducing_path.py` (``inducing_path.py``)
-     - 00:00.949
-     - 164.6
+     - 00:01.159
+     - 164.0
+   * - :ref:`sphx_glr_auto_examples_intro_checking_validity_of_a_pag.py` (``checking_validity_of_a_pag.py``)
+     - 00:01.096
+     - 165.7
diff --git a/dev/_sources/auto_examples/mixededge/plot_mixed_edge_graph.rst.txt b/dev/_sources/auto_examples/mixededge/plot_mixed_edge_graph.rst.txt
index 16ff84ede..2cc094013 100644
--- a/dev/_sources/auto_examples/mixededge/plot_mixed_edge_graph.rst.txt
+++ b/dev/_sources/auto_examples/mixededge/plot_mixed_edge_graph.rst.txt
@@ -154,7 +154,7 @@ Mixed Edge Graph Properties
     MixedEdgeGraph named 'IV Graph' with 3 nodes and 3 edges and 2 edge types is directed: False because there are directed edges.
     False
     ['directed', 'bidirected']
-    {'directed': <networkx.classes.digraph.DiGraph object at 0x768fb00f9e50>, 'bidirected': <networkx.classes.graph.Graph object at 0x7690724fcfd0>}
+    {'directed': <networkx.classes.digraph.DiGraph object at 0x7c948b6c43d0>, 'bidirected': <networkx.classes.graph.Graph object at 0x7c93caa5df10>}
 
 
 
@@ -194,7 +194,7 @@ Mixed Edge Graph Operations on Nodes
 
  .. code-block:: none
 
-    MixedEdgeGraph named 'IV Graph' with 3 nodes and 3 edges and 2 edge types has nodes: ['X', 'Z', 'Y']
+    MixedEdgeGraph named 'IV Graph' with 3 nodes and 3 edges and 2 edge types has nodes: ['Y', 'Z', 'X']
     Graph has node A: False
     Now graph has node A: True
     Graph has node A: False
@@ -312,9 +312,9 @@ class properties. Moreover, one can specify the edge type.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** (0 minutes 1.187 seconds)
+   **Total running time of the script:** (0 minutes 1.385 seconds)
 
-**Estimated memory usage:**  171 MB
+**Estimated memory usage:**  170 MB
 
 
 .. _sphx_glr_download_auto_examples_mixededge_plot_mixed_edge_graph.py:
diff --git a/dev/_sources/auto_examples/mixededge/sg_execution_times.rst.txt b/dev/_sources/auto_examples/mixededge/sg_execution_times.rst.txt
index c5aaf18f5..de2c17042 100644
--- a/dev/_sources/auto_examples/mixededge/sg_execution_times.rst.txt
+++ b/dev/_sources/auto_examples/mixededge/sg_execution_times.rst.txt
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:01.187** total execution time for 1 file **from auto_examples/mixededge**:
+**00:01.385** total execution time for 1 file **from auto_examples/mixededge**:
 
 .. container::
 
@@ -33,5 +33,5 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_auto_examples_mixededge_plot_mixed_edge_graph.py` (``plot_mixed_edge_graph.py``)
-     - 00:01.187
-     - 170.5
+     - 00:01.385
+     - 170.2
diff --git a/dev/_sources/auto_examples/visualization/draw_and_compare_graphs_with_same_layout.rst.txt b/dev/_sources/auto_examples/visualization/draw_and_compare_graphs_with_same_layout.rst.txt
index d073b5e2f..58817536d 100644
--- a/dev/_sources/auto_examples/visualization/draw_and_compare_graphs_with_same_layout.rst.txt
+++ b/dev/_sources/auto_examples/visualization/draw_and_compare_graphs_with_same_layout.rst.txt
@@ -139,9 +139,9 @@ such as `Dagitty <http://dagitty.net>`_.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** (0 minutes 0.415 seconds)
+   **Total running time of the script:** (0 minutes 0.438 seconds)
 
-**Estimated memory usage:**  165 MB
+**Estimated memory usage:**  164 MB
 
 
 .. _sphx_glr_download_auto_examples_visualization_draw_and_compare_graphs_with_same_layout.py:
diff --git a/dev/_sources/auto_examples/visualization/plot_timeseries_graphs.rst.txt b/dev/_sources/auto_examples/visualization/plot_timeseries_graphs.rst.txt
index 50cce29ae..ced9c6487 100644
--- a/dev/_sources/auto_examples/visualization/plot_timeseries_graphs.rst.txt
+++ b/dev/_sources/auto_examples/visualization/plot_timeseries_graphs.rst.txt
@@ -136,9 +136,9 @@ which creates a nice default layout for time-series graphs.
 
 .. rst-class:: sphx-glr-timing
 
-   **Total running time of the script:** (0 minutes 0.926 seconds)
+   **Total running time of the script:** (0 minutes 1.067 seconds)
 
-**Estimated memory usage:**  165 MB
+**Estimated memory usage:**  164 MB
 
 
 .. _sphx_glr_download_auto_examples_visualization_plot_timeseries_graphs.py:
diff --git a/dev/_sources/auto_examples/visualization/sg_execution_times.rst.txt b/dev/_sources/auto_examples/visualization/sg_execution_times.rst.txt
index f31891e6c..f0867f15a 100644
--- a/dev/_sources/auto_examples/visualization/sg_execution_times.rst.txt
+++ b/dev/_sources/auto_examples/visualization/sg_execution_times.rst.txt
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:01.341** total execution time for 2 files **from auto_examples/visualization**:
+**00:01.504** total execution time for 2 files **from auto_examples/visualization**:
 
 .. container::
 
@@ -33,8 +33,8 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_auto_examples_visualization_plot_timeseries_graphs.py` (``plot_timeseries_graphs.py``)
-     - 00:00.926
-     - 164.6
+     - 00:01.067
+     - 164.0
    * - :ref:`sphx_glr_auto_examples_visualization_draw_and_compare_graphs_with_same_layout.py` (``draw_and_compare_graphs_with_same_layout.py``)
-     - 00:00.415
-     - 164.6
+     - 00:00.438
+     - 164.0
diff --git a/dev/_sources/sg_execution_times.rst.txt b/dev/_sources/sg_execution_times.rst.txt
index da68ffeaa..3e56230fb 100644
--- a/dev/_sources/sg_execution_times.rst.txt
+++ b/dev/_sources/sg_execution_times.rst.txt
@@ -6,7 +6,7 @@
 
 Computation times
 =================
-**00:06.532** total execution time for 6 files **from all galleries**:
+**00:07.479** total execution time for 6 files **from all galleries**:
 
 .. container::
 
@@ -33,20 +33,20 @@ Computation times
      - Time
      - Mem (MB)
    * - :ref:`sphx_glr_auto_examples_intro_intro_causal_graphs.py` (``../examples/intro/intro_causal_graphs.py``)
-     - 00:02.086
-     - 249.6
+     - 00:02.335
+     - 248.3
    * - :ref:`sphx_glr_auto_examples_mixededge_plot_mixed_edge_graph.py` (``../examples/mixededge/plot_mixed_edge_graph.py``)
-     - 00:01.187
-     - 170.5
-   * - :ref:`sphx_glr_auto_examples_intro_checking_validity_of_a_pag.py` (``../examples/intro/checking_validity_of_a_pag.py``)
-     - 00:00.969
-     - 166.3
+     - 00:01.385
+     - 170.2
    * - :ref:`sphx_glr_auto_examples_intro_inducing_path.py` (``../examples/intro/inducing_path.py``)
-     - 00:00.949
-     - 164.6
+     - 00:01.159
+     - 164.0
+   * - :ref:`sphx_glr_auto_examples_intro_checking_validity_of_a_pag.py` (``../examples/intro/checking_validity_of_a_pag.py``)
+     - 00:01.096
+     - 165.7
    * - :ref:`sphx_glr_auto_examples_visualization_plot_timeseries_graphs.py` (``../examples/visualization/plot_timeseries_graphs.py``)
-     - 00:00.926
-     - 164.6
+     - 00:01.067
+     - 164.0
    * - :ref:`sphx_glr_auto_examples_visualization_draw_and_compare_graphs_with_same_layout.py` (``../examples/visualization/draw_and_compare_graphs_with_same_layout.py``)
-     - 00:00.415
-     - 164.6
+     - 00:00.438
+     - 164.0
diff --git a/dev/auto_examples/intro/checking_validity_of_a_pag.html b/dev/auto_examples/intro/checking_validity_of_a_pag.html
index e4c2934c2..bd3eec337 100644
--- a/dev/auto_examples/intro/checking_validity_of_a_pag.html
+++ b/dev/auto_examples/intro/checking_validity_of_a_pag.html
@@ -533,7 +533,7 @@ <h2>Validity of a PAG<a class="headerlink" href="#validity-of-a-pag" title="Link
 </pre></div>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>ConditioningSetSelection.PDS
-Context(observed_variables={&#39;G&#39;, &#39;L&#39;, &#39;S&#39;, &#39;PSH&#39;, &#39;I&#39;}, latent_variables=set(), state_variables={}, init_graph=&lt;networkx.classes.graph.Graph object at 0x769072db5890&gt;, included_edges=&lt;networkx.classes.graph.Graph object at 0x769072db5f90&gt;, excluded_edges=&lt;networkx.classes.graph.Graph object at 0x769072db63d0&gt;, num_distributions=1, obs_distribution=True, intervention_targets=[], symmetric_diff_map={}, sigma_map={}, f_nodes=[], num_domains=1, domain_map={}, s_nodes=[])
+Context(observed_variables={&#39;L&#39;, &#39;PSH&#39;, &#39;I&#39;, &#39;G&#39;, &#39;S&#39;}, latent_variables=set(), state_variables={}, init_graph=&lt;networkx.classes.graph.Graph object at 0x7c948c635b50&gt;, included_edges=&lt;networkx.classes.graph.Graph object at 0x7c948c636250&gt;, excluded_edges=&lt;networkx.classes.graph.Graph object at 0x7c948c636690&gt;, num_distributions=1, obs_distribution=True, intervention_targets=[], symmetric_diff_map={}, sigma_map={}, f_nodes=[], num_domains=1, domain_map={}, s_nodes=[])
 True
 </pre></div>
 </div>
@@ -552,7 +552,7 @@ <h2>Validity of a PAG<a class="headerlink" href="#validity-of-a-pag" title="Link
 </pre></div>
 </div>
 <div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>ConditioningSetSelection.PDS
-Context(observed_variables={&#39;G&#39;, &#39;L&#39;, &#39;S&#39;, &#39;PSH&#39;, &#39;I&#39;}, latent_variables=set(), state_variables={}, init_graph=&lt;networkx.classes.graph.Graph object at 0x769072dc9f90&gt;, included_edges=&lt;networkx.classes.graph.Graph object at 0x769072dca690&gt;, excluded_edges=&lt;networkx.classes.graph.Graph object at 0x769072dcaad0&gt;, num_distributions=1, obs_distribution=True, intervention_targets=[], symmetric_diff_map={}, sigma_map={}, f_nodes=[], num_domains=1, domain_map={}, s_nodes=[])
+Context(observed_variables={&#39;L&#39;, &#39;PSH&#39;, &#39;I&#39;, &#39;G&#39;, &#39;S&#39;}, latent_variables=set(), state_variables={}, init_graph=&lt;networkx.classes.graph.Graph object at 0x7c948c649f50&gt;, included_edges=&lt;networkx.classes.graph.Graph object at 0x7c948c64a650&gt;, excluded_edges=&lt;networkx.classes.graph.Graph object at 0x7c948c64aa90&gt;, num_distributions=1, obs_distribution=True, intervention_targets=[], symmetric_diff_map={}, sigma_map={}, f_nodes=[], num_domains=1, domain_map={}, s_nodes=[])
 False
 </pre></div>
 </div>
@@ -568,7 +568,7 @@ <h2>References<a class="headerlink" href="#references" title="Link to this headi
 </aside>
 </aside>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> (0 minutes 0.969 seconds)</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> (0 minutes 1.096 seconds)</p>
 <p><strong>Estimated memory usage:</strong>  166 MB</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-auto-examples-intro-checking-validity-of-a-pag-py">
 <div class="sphx-glr-download sphx-glr-download-jupyter docutils container">
diff --git a/dev/auto_examples/intro/inducing_path.html b/dev/auto_examples/intro/inducing_path.html
index b3f0bccc4..4c1900682 100644
--- a/dev/auto_examples/intro/inducing_path.html
+++ b/dev/auto_examples/intro/inducing_path.html
@@ -604,8 +604,8 @@ <h2>References<a class="headerlink" href="#references" title="Link to this headi
 </aside>
 </aside>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> (0 minutes 0.949 seconds)</p>
-<p><strong>Estimated memory usage:</strong>  165 MB</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> (0 minutes 1.159 seconds)</p>
+<p><strong>Estimated memory usage:</strong>  164 MB</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-auto-examples-intro-inducing-path-py">
 <div class="sphx-glr-download sphx-glr-download-jupyter docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/8259499c2b052354bd5dc54791c0d957/inducing_path.ipynb"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Jupyter</span> <span class="pre">notebook:</span> <span class="pre">inducing_path.ipynb</span></code></a></p>
diff --git a/dev/auto_examples/intro/intro_causal_graphs.html b/dev/auto_examples/intro/intro_causal_graphs.html
index 29dfb6bd4..741844f15 100644
--- a/dev/auto_examples/intro/intro_causal_graphs.html
+++ b/dev/auto_examples/intro/intro_causal_graphs.html
@@ -585,7 +585,7 @@ <h2>Structural Causal Models: Simulating some data<a class="headerlink" href="#s
 Fitting causal mechanism of node z:   0%|          | 0/5 [00:00&lt;?, ?it/s]
 Fitting causal mechanism of node w:   0%|          | 0/5 [00:00&lt;?, ?it/s]
 Fitting causal mechanism of node xy:   0%|          | 0/5 [00:00&lt;?, ?it/s]
-Fitting causal mechanism of node xy: 100%|██████████| 5/5 [00:00&lt;00:00, 900.30it/s]
+Fitting causal mechanism of node xy: 100%|██████████| 5/5 [00:00&lt;00:00, 881.75it/s]
    z  xy  w  x  y
 0  1   1  1  1  1
 1  1   1  2  2  3
@@ -599,7 +599,7 @@ <h2>Structural Causal Models: Simulating some data<a class="headerlink" href="#s
 y     [1, 3, 2, 0]
 dtype: object
 
-&lt;graphviz.graphs.Digraph object at 0x768fb1266e10&gt;
+&lt;graphviz.graphs.Digraph object at 0x7c93ca895490&gt;
 </pre></div>
 </div>
 </section>
@@ -768,8 +768,8 @@ <h3>References<a class="headerlink" href="#references" title="Link to this headi
 </aside>
 </aside>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> (0 minutes 2.086 seconds)</p>
-<p><strong>Estimated memory usage:</strong>  250 MB</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> (0 minutes 2.335 seconds)</p>
+<p><strong>Estimated memory usage:</strong>  248 MB</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-auto-examples-intro-intro-causal-graphs-py">
 <div class="sphx-glr-download sphx-glr-download-jupyter docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/e92c7413422dfa4591a10ac31b2b0f4d/intro_causal_graphs.ipynb"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Jupyter</span> <span class="pre">notebook:</span> <span class="pre">intro_causal_graphs.ipynb</span></code></a></p>
diff --git a/dev/auto_examples/intro/sg_execution_times.html b/dev/auto_examples/intro/sg_execution_times.html
index 93f810c72..b2bf6fa3b 100644
--- a/dev/auto_examples/intro/sg_execution_times.html
+++ b/dev/auto_examples/intro/sg_execution_times.html
@@ -429,7 +429,7 @@
                   
   <section id="computation-times">
 <span id="sphx-glr-auto-examples-intro-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:04.004</strong> total execution time for 3 files <strong>from auto_examples/intro</strong>:</p>
+<p><strong>00:04.590</strong> total execution time for 3 files <strong>from auto_examples/intro</strong>:</p>
 <div class="docutils container">
 <style scoped>
 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -451,16 +451,16 @@
 </thead>
 <tbody>
 <tr class="row-even"><td><p><a class="reference internal" href="intro_causal_graphs.html#sphx-glr-auto-examples-intro-intro-causal-graphs-py"><span class="std std-ref">An introduction to causal graphs and how to use them</span></a> (<code class="docutils literal notranslate"><span class="pre">intro_causal_graphs.py</span></code>)</p></td>
-<td><p>00:02.086</p></td>
-<td><p>249.6</p></td>
+<td><p>00:02.335</p></td>
+<td><p>248.3</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="checking_validity_of_a_pag.html#sphx-glr-auto-examples-intro-checking-validity-of-a-pag-py"><span class="std std-ref">On PAGs and their validity</span></a> (<code class="docutils literal notranslate"><span class="pre">checking_validity_of_a_pag.py</span></code>)</p></td>
-<td><p>00:00.969</p></td>
-<td><p>166.3</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="inducing_path.html#sphx-glr-auto-examples-intro-inducing-path-py"><span class="std std-ref">An introduction to Inducing Paths and how to find them</span></a> (<code class="docutils literal notranslate"><span class="pre">inducing_path.py</span></code>)</p></td>
+<td><p>00:01.159</p></td>
+<td><p>164.0</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="inducing_path.html#sphx-glr-auto-examples-intro-inducing-path-py"><span class="std std-ref">An introduction to Inducing Paths and how to find them</span></a> (<code class="docutils literal notranslate"><span class="pre">inducing_path.py</span></code>)</p></td>
-<td><p>00:00.949</p></td>
-<td><p>164.6</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="checking_validity_of_a_pag.html#sphx-glr-auto-examples-intro-checking-validity-of-a-pag-py"><span class="std std-ref">On PAGs and their validity</span></a> (<code class="docutils literal notranslate"><span class="pre">checking_validity_of_a_pag.py</span></code>)</p></td>
+<td><p>00:01.096</p></td>
+<td><p>165.7</p></td>
 </tr>
 </tbody>
 </table>
diff --git a/dev/auto_examples/mixededge/plot_mixed_edge_graph.html b/dev/auto_examples/mixededge/plot_mixed_edge_graph.html
index dbec8224f..a65a9f3a9 100644
--- a/dev/auto_examples/mixededge/plot_mixed_edge_graph.html
+++ b/dev/auto_examples/mixededge/plot_mixed_edge_graph.html
@@ -553,7 +553,7 @@ <h2>Mixed Edge Graph Properties<a class="headerlink" href="#mixed-edge-graph-pro
 MixedEdgeGraph named &#39;IV Graph&#39; with 3 nodes and 3 edges and 2 edge types is directed: False because there are directed edges.
 False
 [&#39;directed&#39;, &#39;bidirected&#39;]
-{&#39;directed&#39;: &lt;networkx.classes.digraph.DiGraph object at 0x768fb00f9e50&gt;, &#39;bidirected&#39;: &lt;networkx.classes.graph.Graph object at 0x7690724fcfd0&gt;}
+{&#39;directed&#39;: &lt;networkx.classes.digraph.DiGraph object at 0x7c948b6c43d0&gt;, &#39;bidirected&#39;: &lt;networkx.classes.graph.Graph object at 0x7c93caa5df10&gt;}
 </pre></div>
 </div>
 </section>
@@ -577,7 +577,7 @@ <h2>Mixed Edge Graph Operations on Nodes<a class="headerlink" href="#mixed-edge-
 <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Graph has node A: </span><span class="si">{</span><a href="../../generated/pywhy_graphs.networkx.MixedEdgeGraph.html#pywhy_graphs.networkx.MixedEdgeGraph.has_node" title="pywhy_graphs.networkx.MixedEdgeGraph.has_node" class="sphx-glr-backref-module-pywhy_graphs-networkx sphx-glr-backref-type-py-method"><span class="n">G</span><span class="o">.</span><span class="n">has_node</span></a><span class="p">(</span><span class="s1">&#39;A&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
 </pre></div>
 </div>
-<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>MixedEdgeGraph named &#39;IV Graph&#39; with 3 nodes and 3 edges and 2 edge types has nodes: [&#39;X&#39;, &#39;Z&#39;, &#39;Y&#39;]
+<div class="sphx-glr-script-out highlight-none notranslate"><div class="highlight"><pre><span></span>MixedEdgeGraph named &#39;IV Graph&#39; with 3 nodes and 3 edges and 2 edge types has nodes: [&#39;Y&#39;, &#39;Z&#39;, &#39;X&#39;]
 Graph has node A: False
 Now graph has node A: True
 Graph has node A: False
@@ -659,8 +659,8 @@ <h2>Mixed Edge Graph Key Differences<a class="headerlink" href="#mixed-edge-grap
 bidirected with degree: [(&#39;X&#39;, 1), (&#39;Y&#39;, 1), (&#39;Z&#39;, 0)]
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> (0 minutes 1.187 seconds)</p>
-<p><strong>Estimated memory usage:</strong>  171 MB</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> (0 minutes 1.385 seconds)</p>
+<p><strong>Estimated memory usage:</strong>  170 MB</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-auto-examples-mixededge-plot-mixed-edge-graph-py">
 <div class="sphx-glr-download sphx-glr-download-jupyter docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/d79fadb808ffdffb00260c1139c586b6/plot_mixed_edge_graph.ipynb"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Jupyter</span> <span class="pre">notebook:</span> <span class="pre">plot_mixed_edge_graph.ipynb</span></code></a></p>
diff --git a/dev/auto_examples/mixededge/sg_execution_times.html b/dev/auto_examples/mixededge/sg_execution_times.html
index 9ee7c7758..f94fede95 100644
--- a/dev/auto_examples/mixededge/sg_execution_times.html
+++ b/dev/auto_examples/mixededge/sg_execution_times.html
@@ -429,7 +429,7 @@
                   
   <section id="computation-times">
 <span id="sphx-glr-auto-examples-mixededge-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:01.187</strong> total execution time for 1 file <strong>from auto_examples/mixededge</strong>:</p>
+<p><strong>00:01.385</strong> total execution time for 1 file <strong>from auto_examples/mixededge</strong>:</p>
 <div class="docutils container">
 <style scoped>
 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -451,8 +451,8 @@
 </thead>
 <tbody>
 <tr class="row-even"><td><p><a class="reference internal" href="plot_mixed_edge_graph.html#sphx-glr-auto-examples-mixededge-plot-mixed-edge-graph-py"><span class="std std-ref">MixedEdgeGraph - Graph with different types of edges</span></a> (<code class="docutils literal notranslate"><span class="pre">plot_mixed_edge_graph.py</span></code>)</p></td>
-<td><p>00:01.187</p></td>
-<td><p>170.5</p></td>
+<td><p>00:01.385</p></td>
+<td><p>170.2</p></td>
 </tr>
 </tbody>
 </table>
diff --git a/dev/auto_examples/visualization/draw_and_compare_graphs_with_same_layout.html b/dev/auto_examples/visualization/draw_and_compare_graphs_with_same_layout.html
index 6a42d19fe..afb45c935 100644
--- a/dev/auto_examples/visualization/draw_and_compare_graphs_with_same_layout.html
+++ b/dev/auto_examples/visualization/draw_and_compare_graphs_with_same_layout.html
@@ -536,8 +536,8 @@
 <span class="c1"># on graphviz engines: https://graphviz.org/docs/layouts/neato/.</span>
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> (0 minutes 0.415 seconds)</p>
-<p><strong>Estimated memory usage:</strong>  165 MB</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> (0 minutes 0.438 seconds)</p>
+<p><strong>Estimated memory usage:</strong>  164 MB</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-auto-examples-visualization-draw-and-compare-graphs-with-same-layout-py">
 <div class="sphx-glr-download sphx-glr-download-jupyter docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/5c63eea3ed158f1594832d5ff49e86ee/draw_and_compare_graphs_with_same_layout.ipynb"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Jupyter</span> <span class="pre">notebook:</span> <span class="pre">draw_and_compare_graphs_with_same_layout.ipynb</span></code></a></p>
diff --git a/dev/auto_examples/visualization/plot_timeseries_graphs.html b/dev/auto_examples/visualization/plot_timeseries_graphs.html
index cb8be3062..824e38110 100644
--- a/dev/auto_examples/visualization/plot_timeseries_graphs.html
+++ b/dev/auto_examples/visualization/plot_timeseries_graphs.html
@@ -520,8 +520,8 @@
 &#39;G.png&#39;
 </pre></div>
 </div>
-<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> (0 minutes 0.926 seconds)</p>
-<p><strong>Estimated memory usage:</strong>  165 MB</p>
+<p class="sphx-glr-timing"><strong>Total running time of the script:</strong> (0 minutes 1.067 seconds)</p>
+<p><strong>Estimated memory usage:</strong>  164 MB</p>
 <div class="sphx-glr-footer sphx-glr-footer-example docutils container" id="sphx-glr-download-auto-examples-visualization-plot-timeseries-graphs-py">
 <div class="sphx-glr-download sphx-glr-download-jupyter docutils container">
 <p><a class="reference download internal" download="" href="../../_downloads/452d11d46ae43bdbd389ae3a69d72818/plot_timeseries_graphs.ipynb"><code class="xref download docutils literal notranslate"><span class="pre">Download</span> <span class="pre">Jupyter</span> <span class="pre">notebook:</span> <span class="pre">plot_timeseries_graphs.ipynb</span></code></a></p>
diff --git a/dev/auto_examples/visualization/sg_execution_times.html b/dev/auto_examples/visualization/sg_execution_times.html
index 1b7eaca84..a432c2492 100644
--- a/dev/auto_examples/visualization/sg_execution_times.html
+++ b/dev/auto_examples/visualization/sg_execution_times.html
@@ -429,7 +429,7 @@
                   
   <section id="computation-times">
 <span id="sphx-glr-auto-examples-visualization-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:01.341</strong> total execution time for 2 files <strong>from auto_examples/visualization</strong>:</p>
+<p><strong>00:01.504</strong> total execution time for 2 files <strong>from auto_examples/visualization</strong>:</p>
 <div class="docutils container">
 <style scoped>
 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -451,12 +451,12 @@
 </thead>
 <tbody>
 <tr class="row-even"><td><p><a class="reference internal" href="plot_timeseries_graphs.html#sphx-glr-auto-examples-visualization-plot-timeseries-graphs-py"><span class="std std-ref">Drawing timeseries graphs and setting their layout</span></a> (<code class="docutils literal notranslate"><span class="pre">plot_timeseries_graphs.py</span></code>)</p></td>
-<td><p>00:00.926</p></td>
-<td><p>164.6</p></td>
+<td><p>00:01.067</p></td>
+<td><p>164.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="draw_and_compare_graphs_with_same_layout.html#sphx-glr-auto-examples-visualization-draw-and-compare-graphs-with-same-layout-py"><span class="std std-ref">Drawing graphs and setting their layout for visual comparison</span></a> (<code class="docutils literal notranslate"><span class="pre">draw_and_compare_graphs_with_same_layout.py</span></code>)</p></td>
-<td><p>00:00.415</p></td>
-<td><p>164.6</p></td>
+<td><p>00:00.438</p></td>
+<td><p>164.0</p></td>
 </tr>
 </tbody>
 </table>
diff --git a/dev/searchindex.js b/dev/searchindex.js
index 7685f8a3b..26c31c698 100644
--- a/dev/searchindex.js
+++ b/dev/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["api", "auto_examples/index", "auto_examples/intro/checking_validity_of_a_pag", "auto_examples/intro/index", "auto_examples/intro/inducing_path", "auto_examples/intro/intro_causal_graphs", "auto_examples/intro/sg_execution_times", "auto_examples/mixededge/index", "auto_examples/mixededge/plot_mixed_edge_graph", "auto_examples/mixededge/sg_execution_times", "auto_examples/sg_execution_times", "auto_examples/visualization/draw_and_compare_graphs_with_same_layout", "auto_examples/visualization/index", "auto_examples/visualization/plot_timeseries_graphs", "auto_examples/visualization/sg_execution_times", "generated/pywhy_graphs.ADMG", "generated/pywhy_graphs.AugmentedGraph", "generated/pywhy_graphs.AugmentedPAG", "generated/pywhy_graphs.CPDAG", "generated/pywhy_graphs.PAG", "generated/pywhy_graphs.algorithms.acyclification", "generated/pywhy_graphs.algorithms.add_all_snode_combinations", "generated/pywhy_graphs.algorithms.all_semi_directed_paths", "generated/pywhy_graphs.algorithms.check_pag_definition", "generated/pywhy_graphs.algorithms.compute_invariant_domains_per_node", "generated/pywhy_graphs.algorithms.dag_to_cpdag", "generated/pywhy_graphs.algorithms.dag_to_mag", "generated/pywhy_graphs.algorithms.discriminating_path", "generated/pywhy_graphs.algorithms.find_connected_pairs", "generated/pywhy_graphs.algorithms.has_adc", "generated/pywhy_graphs.algorithms.inducing_path", "generated/pywhy_graphs.algorithms.is_definite_noncollider", "generated/pywhy_graphs.algorithms.is_semi_directed_path", "generated/pywhy_graphs.algorithms.is_valid_mec_graph", "generated/pywhy_graphs.algorithms.label_edges", "generated/pywhy_graphs.algorithms.mag_to_pag", "generated/pywhy_graphs.algorithms.order_edges", "generated/pywhy_graphs.algorithms.pag_to_mag", "generated/pywhy_graphs.algorithms.pdag_to_cpdag", "generated/pywhy_graphs.algorithms.pdag_to_dag", "generated/pywhy_graphs.algorithms.pds", "generated/pywhy_graphs.algorithms.pds_path", "generated/pywhy_graphs.algorithms.pds_t", "generated/pywhy_graphs.algorithms.pds_t_path", "generated/pywhy_graphs.algorithms.possible_ancestors", "generated/pywhy_graphs.algorithms.possible_descendants", "generated/pywhy_graphs.algorithms.semi_directed_paths.all_semi_directed_paths", "generated/pywhy_graphs.algorithms.semi_directed_paths.is_semi_directed_path", "generated/pywhy_graphs.algorithms.uncovered_pd_path", "generated/pywhy_graphs.algorithms.valid_mag", "generated/pywhy_graphs.algorithms.valid_pag", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesDiGraph", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesGraph", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesMixedEdgeGraph", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG", "generated/pywhy_graphs.classes.timeseries.TimeSeriesDiGraph", "generated/pywhy_graphs.classes.timeseries.TimeSeriesGraph", "generated/pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph", "generated/pywhy_graphs.classes.timeseries.complete_ts_graph", "generated/pywhy_graphs.classes.timeseries.empty_ts_graph", "generated/pywhy_graphs.classes.timeseries.get_summary_graph", "generated/pywhy_graphs.classes.timeseries.has_homologous_edges", "generated/pywhy_graphs.classes.timeseries.nodes_in_time_order", "generated/pywhy_graphs.export.clearn_to_graph", "generated/pywhy_graphs.export.graph_to_clearn", "generated/pywhy_graphs.export.graph_to_numpy", "generated/pywhy_graphs.export.graph_to_pcalg", "generated/pywhy_graphs.export.graph_to_tetrad", "generated/pywhy_graphs.export.numpy_to_graph", "generated/pywhy_graphs.export.pcalg_to_graph", "generated/pywhy_graphs.export.tetrad_to_graph", "generated/pywhy_graphs.functional.apply_linear_soft_intervention", "generated/pywhy_graphs.functional.discrete.add_cpd_for_node", "generated/pywhy_graphs.functional.discrete.make_random_discrete_graph", "generated/pywhy_graphs.functional.make_graph_linear_gaussian", "generated/pywhy_graphs.functional.make_graph_multidomain", "generated/pywhy_graphs.functional.set_node_attributes_with_G", "generated/pywhy_graphs.networkx.MixedEdgeGraph", "generated/pywhy_graphs.networkx.bidirected_to_unobserved_confounder", "generated/pywhy_graphs.networkx.is_minimal_m_separator", "generated/pywhy_graphs.networkx.m_separated", "generated/pywhy_graphs.networkx.minimal_m_separator", "generated/pywhy_graphs.simulate.simulate_data_from_var", "generated/pywhy_graphs.simulate.simulate_linear_var_process", "generated/pywhy_graphs.simulate.simulate_var_process_from_summary_graph", "generated/pywhy_graphs.sys_info", "generated/pywhy_graphs.viz.draw", "generated/pywhy_graphs.viz.timeseries_layout", "glossary", "index", "installation", "reference/algorithms/index", "reference/classes/index", "reference/export/index", "reference/functional/index", "reference/simulation/index", "sg_execution_times", "use", "user_guide", "whats_new", "whats_new/_contributors", "whats_new/v0.1", "whats_new/v0.2"], "filenames": ["api.rst", "auto_examples/index.rst", "auto_examples/intro/checking_validity_of_a_pag.rst", "auto_examples/intro/index.rst", "auto_examples/intro/inducing_path.rst", "auto_examples/intro/intro_causal_graphs.rst", "auto_examples/intro/sg_execution_times.rst", "auto_examples/mixededge/index.rst", "auto_examples/mixededge/plot_mixed_edge_graph.rst", "auto_examples/mixededge/sg_execution_times.rst", "auto_examples/sg_execution_times.rst", "auto_examples/visualization/draw_and_compare_graphs_with_same_layout.rst", "auto_examples/visualization/index.rst", "auto_examples/visualization/plot_timeseries_graphs.rst", "auto_examples/visualization/sg_execution_times.rst", "generated/pywhy_graphs.ADMG.rst", "generated/pywhy_graphs.AugmentedGraph.rst", "generated/pywhy_graphs.AugmentedPAG.rst", "generated/pywhy_graphs.CPDAG.rst", "generated/pywhy_graphs.PAG.rst", "generated/pywhy_graphs.algorithms.acyclification.rst", "generated/pywhy_graphs.algorithms.add_all_snode_combinations.rst", "generated/pywhy_graphs.algorithms.all_semi_directed_paths.rst", "generated/pywhy_graphs.algorithms.check_pag_definition.rst", "generated/pywhy_graphs.algorithms.compute_invariant_domains_per_node.rst", "generated/pywhy_graphs.algorithms.dag_to_cpdag.rst", "generated/pywhy_graphs.algorithms.dag_to_mag.rst", "generated/pywhy_graphs.algorithms.discriminating_path.rst", "generated/pywhy_graphs.algorithms.find_connected_pairs.rst", "generated/pywhy_graphs.algorithms.has_adc.rst", "generated/pywhy_graphs.algorithms.inducing_path.rst", "generated/pywhy_graphs.algorithms.is_definite_noncollider.rst", "generated/pywhy_graphs.algorithms.is_semi_directed_path.rst", "generated/pywhy_graphs.algorithms.is_valid_mec_graph.rst", "generated/pywhy_graphs.algorithms.label_edges.rst", "generated/pywhy_graphs.algorithms.mag_to_pag.rst", "generated/pywhy_graphs.algorithms.order_edges.rst", "generated/pywhy_graphs.algorithms.pag_to_mag.rst", "generated/pywhy_graphs.algorithms.pdag_to_cpdag.rst", "generated/pywhy_graphs.algorithms.pdag_to_dag.rst", "generated/pywhy_graphs.algorithms.pds.rst", "generated/pywhy_graphs.algorithms.pds_path.rst", "generated/pywhy_graphs.algorithms.pds_t.rst", "generated/pywhy_graphs.algorithms.pds_t_path.rst", "generated/pywhy_graphs.algorithms.possible_ancestors.rst", "generated/pywhy_graphs.algorithms.possible_descendants.rst", "generated/pywhy_graphs.algorithms.semi_directed_paths.all_semi_directed_paths.rst", "generated/pywhy_graphs.algorithms.semi_directed_paths.is_semi_directed_path.rst", "generated/pywhy_graphs.algorithms.uncovered_pd_path.rst", "generated/pywhy_graphs.algorithms.valid_mag.rst", "generated/pywhy_graphs.algorithms.valid_pag.rst", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.rst", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesDiGraph.rst", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesGraph.rst", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesMixedEdgeGraph.rst", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.rst", "generated/pywhy_graphs.classes.timeseries.TimeSeriesDiGraph.rst", "generated/pywhy_graphs.classes.timeseries.TimeSeriesGraph.rst", "generated/pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.rst", "generated/pywhy_graphs.classes.timeseries.complete_ts_graph.rst", "generated/pywhy_graphs.classes.timeseries.empty_ts_graph.rst", "generated/pywhy_graphs.classes.timeseries.get_summary_graph.rst", "generated/pywhy_graphs.classes.timeseries.has_homologous_edges.rst", "generated/pywhy_graphs.classes.timeseries.nodes_in_time_order.rst", "generated/pywhy_graphs.export.clearn_to_graph.rst", "generated/pywhy_graphs.export.graph_to_clearn.rst", "generated/pywhy_graphs.export.graph_to_numpy.rst", "generated/pywhy_graphs.export.graph_to_pcalg.rst", "generated/pywhy_graphs.export.graph_to_tetrad.rst", "generated/pywhy_graphs.export.numpy_to_graph.rst", "generated/pywhy_graphs.export.pcalg_to_graph.rst", "generated/pywhy_graphs.export.tetrad_to_graph.rst", "generated/pywhy_graphs.functional.apply_linear_soft_intervention.rst", "generated/pywhy_graphs.functional.discrete.add_cpd_for_node.rst", "generated/pywhy_graphs.functional.discrete.make_random_discrete_graph.rst", "generated/pywhy_graphs.functional.make_graph_linear_gaussian.rst", "generated/pywhy_graphs.functional.make_graph_multidomain.rst", "generated/pywhy_graphs.functional.set_node_attributes_with_G.rst", "generated/pywhy_graphs.networkx.MixedEdgeGraph.rst", "generated/pywhy_graphs.networkx.bidirected_to_unobserved_confounder.rst", "generated/pywhy_graphs.networkx.is_minimal_m_separator.rst", "generated/pywhy_graphs.networkx.m_separated.rst", "generated/pywhy_graphs.networkx.minimal_m_separator.rst", "generated/pywhy_graphs.simulate.simulate_data_from_var.rst", "generated/pywhy_graphs.simulate.simulate_linear_var_process.rst", "generated/pywhy_graphs.simulate.simulate_var_process_from_summary_graph.rst", "generated/pywhy_graphs.sys_info.rst", "generated/pywhy_graphs.viz.draw.rst", "generated/pywhy_graphs.viz.timeseries_layout.rst", "glossary.rst", "index.rst", "installation.md", "reference/algorithms/index.rst", "reference/classes/index.rst", "reference/export/index.rst", "reference/functional/index.rst", "reference/simulation/index.rst", "sg_execution_times.rst", "use.rst", "user_guide.rst", "whats_new.rst", "whats_new/_contributors.rst", "whats_new/v0.1.rst", "whats_new/v0.2.rst"], "titles": ["API", "Examples Gallery", "On PAGs and their validity", "Introduction to causal graphs", "An introduction to Inducing Paths and how to find them", "An introduction to causal graphs and how to use them", "Computation times", "Networkx MixedEdgeGraph Examples", "MixedEdgeGraph - Graph with different types of edges", "Computation times", "Computation times", "Drawing graphs and setting their layout for visual comparison", "Visualization of causal graphs", "Drawing timeseries graphs and setting their layout", "Computation times", "pywhy_graphs.ADMG", "pywhy_graphs.AugmentedGraph", "pywhy_graphs.AugmentedPAG", "pywhy_graphs.CPDAG", "pywhy_graphs.PAG", "<span class=\"section-number\">3.4.1. </span>pywhy_graphs.algorithms.acyclification", "pywhy_graphs.algorithms.add_all_snode_combinations", "pywhy_graphs.algorithms.all_semi_directed_paths", "<span class=\"section-number\">3.1.9. </span>pywhy_graphs.algorithms.check_pag_definition", "pywhy_graphs.algorithms.compute_invariant_domains_per_node", "pywhy_graphs.algorithms.dag_to_cpdag", "pywhy_graphs.algorithms.dag_to_mag", "<span class=\"section-number\">3.1.4. </span>pywhy_graphs.algorithms.discriminating_path", "pywhy_graphs.algorithms.find_connected_pairs", "pywhy_graphs.algorithms.has_adc", "pywhy_graphs.algorithms.inducing_path", "<span class=\"section-number\">3.1.5. </span>pywhy_graphs.algorithms.is_definite_noncollider", "pywhy_graphs.algorithms.is_semi_directed_path", "<span class=\"section-number\">3.1.1. </span>pywhy_graphs.algorithms.is_valid_mec_graph", "pywhy_graphs.algorithms.label_edges", "<span class=\"section-number\">3.1.7. </span>pywhy_graphs.algorithms.mag_to_pag", "pywhy_graphs.algorithms.order_edges", "<span class=\"section-number\">3.1.8. </span>pywhy_graphs.algorithms.pag_to_mag", "pywhy_graphs.algorithms.pdag_to_cpdag", "pywhy_graphs.algorithms.pdag_to_dag", "<span class=\"section-number\">3.2.1. </span>pywhy_graphs.algorithms.pds", "<span class=\"section-number\">3.2.2. </span>pywhy_graphs.algorithms.pds_path", "<span class=\"section-number\">3.3.1. </span>pywhy_graphs.algorithms.pds_t", "<span class=\"section-number\">3.3.2. </span>pywhy_graphs.algorithms.pds_t_path", "<span class=\"section-number\">3.1.2. </span>pywhy_graphs.algorithms.possible_ancestors", "<span class=\"section-number\">3.1.3. </span>pywhy_graphs.algorithms.possible_descendants", "<span class=\"section-number\">4.1. </span>pywhy_graphs.algorithms.semi_directed_paths.all_semi_directed_paths", "<span class=\"section-number\">4.2. </span>pywhy_graphs.algorithms.semi_directed_paths.is_semi_directed_path", "<span class=\"section-number\">3.2.3. </span>pywhy_graphs.algorithms.uncovered_pd_path", "pywhy_graphs.algorithms.valid_mag", "<span class=\"section-number\">3.1.6. </span>pywhy_graphs.algorithms.valid_pag", "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG", "pywhy_graphs.classes.timeseries.StationaryTimeSeriesDiGraph", "pywhy_graphs.classes.timeseries.StationaryTimeSeriesGraph", "pywhy_graphs.classes.timeseries.StationaryTimeSeriesMixedEdgeGraph", "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG", "pywhy_graphs.classes.timeseries.TimeSeriesDiGraph", "pywhy_graphs.classes.timeseries.TimeSeriesGraph", "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph", "pywhy_graphs.classes.timeseries.complete_ts_graph", "pywhy_graphs.classes.timeseries.empty_ts_graph", "pywhy_graphs.classes.timeseries.get_summary_graph", "pywhy_graphs.classes.timeseries.has_homologous_edges", "pywhy_graphs.classes.timeseries.nodes_in_time_order", "<span class=\"section-number\">6.1.2. </span>pywhy_graphs.export.clearn_to_graph", "<span class=\"section-number\">6.1.1. </span>pywhy_graphs.export.graph_to_clearn", "<span class=\"section-number\">6.2.1. </span>pywhy_graphs.export.graph_to_numpy", "<span class=\"section-number\">6.3.1. </span>pywhy_graphs.export.graph_to_pcalg", "<span class=\"section-number\">6.4.1. </span>pywhy_graphs.export.graph_to_tetrad", "<span class=\"section-number\">6.2.2. </span>pywhy_graphs.export.numpy_to_graph", "<span class=\"section-number\">6.3.2. </span>pywhy_graphs.export.pcalg_to_graph", "<span class=\"section-number\">6.4.2. </span>pywhy_graphs.export.tetrad_to_graph", "<span class=\"section-number\">2.5.2. </span>pywhy_graphs.functional.apply_linear_soft_intervention", "<span class=\"section-number\">2.2.1.2. </span>pywhy_graphs.functional.discrete.add_cpd_for_node", "<span class=\"section-number\">2.2.1.1. </span>pywhy_graphs.functional.discrete.make_random_discrete_graph", "<span class=\"section-number\">2.5.1. </span>pywhy_graphs.functional.make_graph_linear_gaussian", "<span class=\"section-number\">2.7.1. </span>pywhy_graphs.functional.make_graph_multidomain", "pywhy_graphs.functional.set_node_attributes_with_G", "pywhy_graphs.networkx.MixedEdgeGraph", "<span class=\"section-number\">3.1.10. </span>pywhy_graphs.networkx.bidirected_to_unobserved_confounder", "<span class=\"section-number\">3.1.12. </span>pywhy_graphs.networkx.is_minimal_m_separator", "<span class=\"section-number\">3.1.11. </span>pywhy_graphs.networkx.m_separated", "<span class=\"section-number\">3.1.13. </span>pywhy_graphs.networkx.minimal_m_separator", "<span class=\"section-number\">5.1.2. </span>pywhy_graphs.simulate.simulate_data_from_var", "<span class=\"section-number\">5.1.1. </span>pywhy_graphs.simulate.simulate_linear_var_process", "<span class=\"section-number\">5.1.3. </span>pywhy_graphs.simulate.simulate_var_process_from_summary_graph", "pywhy_graphs.sys_info", "pywhy_graphs.viz.draw", "pywhy_graphs.viz.timeseries_layout", "<span class=\"section-number\">7. </span>Glossary of Common Terms and API Elements", "<strong>pywhy-graphs</strong>", "Installation", "<span class=\"section-number\">3. </span>Causal Graph Algorithms in PyWhy", "<span class=\"section-number\">1. </span>Causal Graphs in PyWhy", "<span class=\"section-number\">6. </span>Importing causal graphs to PyWhy-Graphs, or exporting PyWhy-Graphs to another package", "<span class=\"section-number\">2. </span>Functional Causal Graphical Models", "<span class=\"section-number\">5. </span>Simulation module", "Computation times", "How to use pywhy-graphs with examples and tutorials", "User guide: contents", "Release History", "&lt;no title&gt;", "What\u2019s new?", "What\u2019s new?"], "terms": {"thi": [0, 1, 2, 4, 5, 7, 8, 11, 13, 17, 18, 19, 20, 22, 23, 24, 32, 33, 41, 42, 43, 46, 47, 48, 51, 53, 57, 58, 62, 66, 73, 74, 76, 78, 79, 80, 81, 82, 83, 85, 86, 89, 90, 93, 94, 95, 96, 98, 100], "i": [0, 1, 2, 4, 5, 7, 8, 11, 13, 15, 16, 17, 18, 19, 20, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 35, 36, 38, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 55, 58, 62, 66, 67, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 88, 89, 90, 91, 94, 95, 96, 98, 99], "applic": 0, "program": 0, "interfac": [0, 89, 90, 94], "refer": [0, 16, 17, 20, 22, 30, 34, 36, 39, 40, 46, 48, 50, 70, 78, 80, 81, 82, 89, 90, 93, 95], "camelcas": 0, "name": [0, 8, 11, 15, 16, 17, 18, 19, 20, 51, 54, 55, 64, 69, 70, 78, 79, 80, 81, 82, 83, 87, 89, 93], "underscore_cas": 0, "pywhi": [0, 16, 17, 66, 67, 68, 71, 89, 91, 95, 99, 100, 102, 103], "group": 0, "themat": 0, "analysi": 0, "stage": [0, 76, 90], "These": [0, 5, 40, 89, 95, 103], "ar": [0, 2, 4, 5, 8, 11, 15, 16, 17, 18, 19, 22, 23, 24, 28, 30, 33, 34, 36, 40, 44, 45, 46, 48, 50, 51, 52, 55, 58, 61, 62, 64, 66, 67, 69, 70, 74, 75, 76, 78, 79, 80, 82, 83, 84, 89, 90, 92, 93, 95, 100, 103], "structur": [0, 15, 18, 19, 34, 36, 39, 51, 53, 56, 57, 58, 74, 76, 78, 89, 92, 93, 94, 95, 96], "scm": [0, 2, 5, 18, 19, 51, 89, 93], "variou": [0, 5, 11, 93, 102], "encount": [0, 94], "literatur": [0, 5], "tradit": [0, 5, 15, 93], "oper": [0, 20], "over": [0, 8, 18, 19, 42, 43, 51, 52, 55, 58, 73, 78, 81, 83, 90, 93, 95], "onli": [0, 4, 5, 8, 18, 19, 22, 32, 46, 47, 48, 49, 51, 55, 58, 66, 78, 81, 89, 93, 94, 95], "one": [0, 2, 4, 5, 8, 11, 16, 19, 21, 24, 27, 29, 32, 33, 47, 48, 52, 64, 66, 76, 78, 83, 84, 93, 94, 95], "type": [0, 1, 2, 7, 9, 15, 16, 17, 18, 19, 51, 54, 58, 59, 64, 67, 69, 70, 71, 72, 78, 84, 89, 90, 94, 95, 97, 98, 99], "equival": [0, 2, 4, 5, 17, 18, 19, 23, 34, 36, 39, 50, 51, 89, 93, 99], "gener": [0, 1, 2, 4, 5, 8, 11, 13, 15, 18, 19, 22, 46, 51, 73, 74, 76, 78, 83, 84, 87, 93, 95, 96, 98, 99, 102, 103], "consist": [0, 4, 34, 39, 42, 43, 52, 76, 83, 90, 93, 103], "more": [0, 2, 4, 5, 11, 16, 19, 32, 47, 76, 78, 84, 87, 89, 90, 93, 94], "than": [0, 19, 32, 42, 43, 47, 58, 76, 78, 93, 94], "common": [0, 2, 5, 66, 90, 92, 93, 99], "us": [0, 1, 2, 3, 6, 7, 8, 11, 13, 20, 22, 24, 35, 37, 46, 48, 51, 53, 57, 58, 74, 77, 86, 89, 90, 91, 94, 95, 96, 97, 99], "varieti": 0, "differ": [0, 1, 2, 5, 7, 9, 11, 13, 15, 16, 17, 18, 19, 51, 55, 78, 80, 82, 84, 89, 90, 93, 95, 97, 98], "With": 0, "markov": [0, 5, 17, 18, 19, 51, 89, 93, 99], "dag": [0, 4, 15, 18, 19, 23, 25, 26, 34, 36, 37, 39, 51, 55, 64, 69, 70, 71, 74, 75, 76, 79, 81, 84, 85, 90, 93, 94, 103], "markovian": [0, 5, 18, 19, 51, 93], "set": [0, 1, 2, 4, 5, 8, 12, 14, 15, 16, 17, 18, 19, 23, 24, 26, 27, 28, 30, 40, 41, 42, 43, 44, 45, 48, 49, 52, 53, 56, 66, 67, 72, 73, 75, 76, 77, 78, 80, 81, 82, 83, 84, 87, 88, 89, 93, 95, 97, 98], "we": [0, 2, 4, 5, 8, 11, 13, 19, 30, 48, 58, 66, 75, 76, 80, 83, 84, 89, 92, 93, 94, 95, 96, 98, 102, 103], "obtain": 0, "potenti": [0, 48], "direct": [0, 2, 4, 8, 15, 16, 17, 18, 19, 20, 22, 23, 25, 29, 32, 33, 34, 36, 38, 39, 40, 46, 47, 48, 49, 51, 52, 53, 55, 56, 58, 61, 66, 78, 79, 80, 81, 82, 87, 90, 93, 95, 99, 103], "acycl": [0, 4, 15, 18, 25, 34, 36, 38, 39, 40, 51, 84, 90, 93, 95, 99, 102], "pdag": [0, 38, 39, 103], "which": [0, 4, 5, 8, 13, 18, 19, 27, 32, 37, 40, 41, 42, 43, 47, 48, 50, 51, 52, 58, 64, 71, 73, 74, 75, 76, 78, 80, 81, 82, 85, 87, 88, 89, 90, 91, 92, 95, 96, 99], "mai": [0, 15, 18, 19, 22, 31, 46, 52, 76, 78, 80, 81, 82, 84, 89, 93, 95], "complet": [0, 2, 4, 18, 22, 30, 35, 38, 40, 46, 48, 50, 51, 53, 59, 78, 80, 81, 82, 83, 93], "want": [0, 2, 8, 19, 78, 93, 95], "extens": [0, 34, 39, 103], "e": [0, 2, 5, 8, 11, 13, 20, 22, 24, 32, 40, 46, 47, 48, 53, 70, 78, 81, 82, 84, 86, 88, 89, 90, 91, 93, 95], "some": [0, 4, 11, 13, 40, 78, 90, 93, 95, 98], "describ": [0, 2, 39, 89], "here": [0, 5, 8, 70, 78, 94, 95, 98, 102, 103], "Or": [0, 5], "perhap": 0, "its": [0, 8, 52, 73, 89, 93, 94, 95], "correspond": [0, 8, 15, 17, 18, 19, 58, 66, 78, 85, 89, 93, 95], "learn": [0, 4, 5, 17, 18, 19, 20, 34, 35, 36, 39, 40, 51, 64, 86, 90, 93, 95, 98, 99, 102], "implement": [0, 8, 39, 41, 42, 43, 78, 80, 81, 82, 89, 90, 93, 94, 102, 103], "infer": [0, 5, 17, 24, 40, 90, 95], "procedur": [0, 20], "encod": [0, 2, 5, 23, 64, 93, 95], "object": [0, 2, 5, 8, 11, 13, 18, 19, 51, 53, 58, 64, 78, 84, 89, 93], "submodul": [0, 90, 92, 95, 102], "those": [0, 2, 4, 30, 78, 84], "data": [0, 15, 16, 17, 18, 19, 51, 52, 53, 58, 75, 76, 78, 83, 84, 89, 92, 93, 94, 95, 96], "current": [0, 24, 41, 42, 43, 52, 90, 93, 94, 95], "doe": [0, 19, 22, 32, 33, 46, 47, 48, 78, 81, 90, 95], "support": [0, 52, 61, 66, 78, 90, 91, 93, 94, 95, 102, 103], "crucial": 0, "repres": [0, 2, 5, 8, 15, 16, 17, 18, 19, 23, 32, 47, 66, 67, 69, 70, 76, 78, 79, 80, 89, 90, 93, 94, 99], "latent": [0, 2, 4, 5, 15, 17, 18, 19, 30, 40, 48, 50, 51, 84, 89, 93, 95], "confound": [0, 2, 4, 5, 8, 15, 18, 19, 30, 48, 50, 51, 79, 84, 89, 93, 95], "select": [0, 2, 4, 5, 15, 19, 30, 40, 48, 50, 76, 93, 99], "bia": [0, 2, 4, 5, 15, 19, 30, 48, 50, 93], "The": [0, 2, 5, 8, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 58, 59, 61, 62, 63, 64, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 93, 94, 95], "follow": [0, 19, 23, 40, 66, 69, 70, 78, 89, 91, 93, 94, 95], "intend": 0, "pr": 0, "eventu": [0, 78, 90], "thei": [0, 5, 8, 11, 16, 17, 18, 19, 51, 58, 66, 74, 76, 78, 90, 93, 94, 95], "includ": [0, 24, 52, 53, 78, 80, 82, 83, 84, 85, 86, 89, 93, 102, 103], "temporari": 0, "bridg": 0, "welcom": [0, 94], "feedback": 0, "specif": [0, 2, 8, 24, 66, 76, 77, 78, 80, 82, 88, 89, 90, 94, 99], "time": [0, 2, 4, 5, 8, 11, 13, 22, 42, 43, 46, 52, 53, 54, 56, 57, 58, 59, 61, 62, 63, 73, 83, 84, 85, 88, 89, 99, 102], "seri": [0, 5, 13, 52, 53, 54, 56, 57, 58, 59, 61, 62, 83, 84, 85, 88, 89, 99, 102], "also": [0, 36, 66, 74, 76, 78, 88, 89, 90, 92, 93, 95], "have": [0, 5, 8, 19, 21, 31, 33, 62, 66, 74, 75, 76, 78, 79, 81, 83, 90, 93, 94, 95], "like": [0, 2, 8, 19, 53, 66, 67, 69, 70, 78, 86, 90, 93, 94, 95], "stationari": [0, 51, 52, 53, 54, 55, 58, 62, 83, 84, 85, 93], "For": [0, 2, 4, 5, 8, 11, 13, 16, 17, 18, 19, 22, 23, 29, 34, 46, 51, 52, 55, 75, 76, 78, 83, 87, 89, 90, 93, 95], "explicitli": [0, 78, 95], "them": [0, 1, 3, 6, 15, 18, 19, 33, 78, 81, 87, 89, 97, 98], "assist": 0, "start": [0, 27, 32, 41, 42, 43, 44, 45, 47, 48, 63, 64, 70, 83, 85, 96], "from": [0, 2, 4, 5, 6, 9, 10, 11, 13, 14, 17, 18, 19, 22, 25, 27, 32, 35, 37, 40, 46, 47, 48, 50, 51, 55, 58, 59, 61, 62, 63, 66, 70, 71, 75, 76, 78, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 93, 96, 97, 99, 102], "an": [0, 1, 2, 3, 6, 8, 11, 15, 16, 17, 18, 19, 20, 21, 23, 24, 29, 30, 33, 35, 40, 48, 50, 51, 52, 53, 55, 58, 59, 66, 69, 70, 73, 75, 76, 78, 80, 81, 82, 83, 84, 86, 87, 89, 90, 93, 94, 95, 96, 97, 98, 102, 103], "linear": [0, 72, 75, 76, 84, 99, 102], "equat": 0, "gaussian": [0, 72, 75, 76, 95], "sem": 0, "compar": [0, 5, 8, 11, 13, 19, 41, 42, 43, 78, 93], "becaus": [0, 4, 5, 8, 19, 32, 47, 66, 76, 80, 82, 90, 93, 94], "can": [0, 2, 4, 5, 8, 11, 13, 15, 18, 19, 21, 22, 24, 28, 46, 48, 51, 52, 58, 66, 78, 81, 83, 84, 86, 87, 90, 93, 94, 95], "wrap": [0, 81, 95], "graphviz": [0, 5, 11, 13, 87, 99], "pygraphviz": [0, 52, 86, 93], "perform": [0, 81], "modular": 0, "node": [0, 2, 5, 11, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 27, 30, 31, 32, 33, 36, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 55, 58, 62, 63, 64, 66, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 87, 88, 89, 90, 93, 94, 99, 102], "modul": [0, 78, 86, 89, 90, 99], "simpl": [1, 19, 89, 90, 93, 95, 98], "demonstr": [1, 7, 8, 11, 13, 98], "how": [1, 3, 6, 7, 8, 11, 13, 15, 18, 19, 21, 24, 66, 67, 78, 81, 87, 89, 93, 95, 97], "note": [1, 5, 7, 8, 11, 15, 16, 17, 18, 19, 20, 21, 22, 30, 32, 33, 40, 41, 42, 43, 46, 47, 48, 51, 52, 58, 62, 66, 67, 70, 71, 76, 78, 79, 81, 83, 84, 85, 88, 89, 93, 95, 98, 100], "wip": [1, 7, 98], "api": [1, 7, 8, 53, 78, 93, 95, 98, 99, 100, 101, 102, 103], "intent": [1, 7, 98], "ad": [1, 4, 5, 7, 8, 16, 17, 18, 19, 21, 51, 52, 58, 78, 79, 93, 95, 98, 102], "edg": [1, 2, 4, 5, 7, 9, 11, 15, 16, 17, 18, 19, 20, 21, 23, 27, 29, 32, 33, 34, 36, 37, 40, 41, 47, 48, 49, 51, 52, 53, 54, 55, 58, 62, 66, 67, 70, 75, 76, 78, 79, 80, 81, 82, 84, 87, 89, 90, 92, 93, 94, 95, 97, 98, 102, 103], "induc": [1, 2, 3, 5, 6, 15, 18, 23, 30, 49, 51, 74, 78, 87, 89, 93, 97, 98, 102], "path": [1, 2, 3, 5, 6, 15, 22, 23, 27, 30, 31, 32, 40, 41, 42, 43, 46, 47, 48, 49, 78, 80, 81, 86, 87, 89, 97, 98, 99, 102, 103], "find": [1, 3, 6, 15, 27, 28, 36, 40, 78, 82, 87, 90, 97, 98, 102, 103], "On": [1, 3, 4, 5, 6, 15, 19, 30, 48, 50, 78, 87, 97, 98], "pag": [1, 3, 6, 11, 13, 15, 16, 17, 23, 27, 31, 33, 35, 37, 40, 41, 44, 45, 48, 50, 53, 64, 67, 69, 70, 71, 78, 87, 90, 93, 97, 98, 102, 103], "valid": [1, 3, 4, 6, 15, 19, 23, 26, 33, 49, 50, 52, 74, 78, 82, 87, 93, 97, 98, 103], "draw": [1, 2, 4, 5, 12, 14, 15, 18, 19, 56, 78, 88, 97, 98, 102], "layout": [1, 12, 14, 15, 18, 19, 56, 78, 87, 88, 97, 98, 102], "comparison": [1, 12, 13, 14, 15, 18, 19, 78, 87, 97, 98], "timeseri": [1, 12, 14, 87, 88, 97, 98, 99, 102], "download": [1, 2, 4, 5, 8, 11, 13, 98], "all": [1, 2, 4, 5, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 30, 35, 36, 37, 40, 46, 48, 51, 52, 53, 58, 62, 73, 74, 75, 76, 78, 79, 80, 82, 89, 90, 93, 94, 95, 97, 98, 100, 103], "python": [1, 2, 4, 5, 8, 11, 13, 18, 19, 51, 58, 78, 86, 89, 90, 91, 98, 103], "sourc": [1, 2, 4, 5, 8, 11, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 90, 93, 98], "code": [1, 2, 4, 5, 8, 11, 13, 70, 89, 98], "auto_examples_python": [1, 98], "zip": [1, 2, 4, 5, 8, 11, 13, 98], "jupyt": [1, 2, 4, 5, 8, 11, 13, 98], "notebook": [1, 2, 4, 5, 8, 11, 13, 98], "auto_examples_jupyt": [1, 98], "sphinx": [1, 2, 4, 5, 8, 11, 13, 89, 98], "go": [2, 4, 5, 8, 11, 13, 102], "end": [2, 4, 5, 8, 11, 13, 22, 41, 42, 43, 46, 64, 66, 70], "full": [2, 4, 5, 8, 11, 13, 34, 78, 84, 95], "exampl": [2, 5, 6, 8, 9, 10, 11, 13, 14, 16, 17, 29, 51, 52, 55, 58, 66, 76, 83, 86, 89, 90, 93, 95, 97, 103], "A": [2, 4, 5, 8, 10, 11, 15, 18, 19, 20, 22, 23, 27, 29, 30, 31, 32, 33, 36, 38, 39, 46, 47, 48, 49, 51, 52, 54, 55, 56, 57, 58, 61, 73, 74, 78, 79, 81, 85, 88, 89, 93], "partial": [2, 18, 19, 20, 23, 38, 39, 51, 90, 93], "ancestr": [2, 19, 20, 23, 49, 80, 81, 82, 90, 93], "mix": [2, 4, 15, 19, 23, 32, 47, 49, 54, 58, 78, 80, 81, 82, 87, 90, 92, 93, 94, 102, 103], "singl": [2, 18, 19, 22, 46, 51, 54, 58, 78, 89, 90, 93, 95], "causal": [2, 4, 6, 8, 15, 16, 17, 18, 19, 20, 30, 48, 50, 51, 54, 55, 64, 66, 67, 68, 69, 70, 71, 72, 73, 76, 78, 79, 80, 81, 82, 84, 86, 87, 89, 90, 97, 99, 102], "relationship": [2, 5, 15, 18, 19, 51, 89, 93, 99], "between": [2, 5, 15, 18, 19, 22, 23, 27, 30, 33, 40, 43, 46, 48, 49, 51, 58, 64, 66, 75, 76, 78, 80, 81, 82, 89, 90, 93, 94, 95, 102, 103], "sever": 2, "defin": [2, 5, 8, 23, 26, 30, 35, 37, 40, 41, 42, 43, 48, 49, 52, 66, 67, 73, 74, 75, 78, 89, 93, 95], "class": [2, 4, 5, 8, 15, 16, 17, 18, 19, 23, 34, 36, 39, 66, 78, 89, 90, 99, 102], "mag": [2, 4, 26, 35, 37, 49, 50, 70, 103], "account": [2, 93], "possibl": [2, 5, 15, 19, 21, 24, 36, 44, 45, 73, 74, 76, 93, 95], "unobserv": [2, 5, 8, 18, 51, 79, 93], "underli": [2, 76, 83, 84, 93, 96], "anoth": [2, 19, 93, 99], "wai": [2, 8, 19, 78, 93, 94, 95], "understand": [2, 5], "condit": [2, 4, 5, 23, 30, 73, 74, 81, 83, 89, 95], "independ": [2, 5, 23, 78, 83, 84, 89], "constraint": [2, 5, 18, 19, 20, 51, 93], "stem": [2, 5, 93], "sinc": [2, 4, 5, 8, 66, 78, 95, 102, 103], "do": [2, 4, 5, 19, 33, 78, 89, 93, 95], "lead": 2, "uniqu": [2, 5, 52, 66, 93, 95], "essenc": 2, "same": [2, 5, 8, 11, 13, 15, 18, 19, 23, 24, 51, 58, 66, 78, 84, 89, 93, 95], "model": [2, 16, 17, 18, 19, 51, 53, 75, 76, 84, 89, 93, 99, 102], "displai": 2, "mark": [2, 90], "tail": [2, 5, 19, 48, 66, 70, 93, 94], "arrowhead": [2, 5, 18, 19, 48, 51, 55, 70, 93, 94], "share": [2, 78, 89], "member": [2, 4], "circl": [2, 5, 17, 19, 48, 55, 66, 70, 87, 93, 94, 102], "endpoint": [2, 4, 5, 17, 19, 27, 32, 43, 47, 48, 64, 66, 93, 94], "That": [2, 32, 47, 72, 78], "circular": [2, 17, 19, 40, 53, 93], "o": [2, 5, 19, 22, 31, 32, 37, 46, 47, 48, 66, 70, 81, 82, 93, 94], "both": [2, 17, 19, 48, 58, 78, 89, 93, 95], "within": [2, 48, 74, 78, 89, 90, 93, 95], "detail": [2, 4, 5, 17, 30, 34, 76, 89, 90], "found": [2, 4, 22, 27, 46, 48, 78, 80, 82, 86], "1": [2, 4, 5, 8, 9, 11, 13, 16, 17, 20, 22, 23, 26, 30, 34, 35, 36, 37, 39, 40, 41, 42, 43, 46, 48, 49, 50, 52, 53, 56, 57, 58, 66, 70, 73, 74, 75, 76, 78, 80, 81, 82, 83, 84, 85, 86, 88, 89, 90, 93, 94, 95, 100], "import": [2, 4, 5, 8, 11, 13, 86, 89, 90, 95, 99, 102], "pywhy_graph": [2, 4, 5, 8, 11, 13, 89, 90, 99, 102, 103], "viz": [2, 4, 5, 11, 13, 102], "try": [2, 76, 89], "dodiscov": [2, 5, 86], "fci": [2, 5, 19, 35, 48, 93], "make_context": 2, "ci": [2, 23], "oracl": 2, "util": [2, 5], "dummy_sampl": 2, "except": [2, 8, 21, 24, 58, 78], "importerror": 2, "rais": [2, 21, 24, 33, 58, 78, 94], "packag": [2, 66, 70, 90, 99], "requir": [2, 4, 11, 19, 34, 89, 93], "convert": [2, 8, 20, 25, 26, 35, 37, 38, 50, 64, 66, 67, 68, 69, 70, 71, 75, 76, 79, 83, 95, 102, 103], "construct": [2, 5, 24, 33, 35, 37, 69, 71, 76, 95], "easi": 2, "task": 2, "librari": [2, 78, 89, 100], "provid": [2, 8, 23, 35, 49, 50, 58, 78, 89, 90, 92, 93, 94, 95, 96], "separ": [2, 5, 19, 30, 40, 41, 42, 43, 52, 66, 80, 81, 82, 93, 102], "purpos": 2, "true": [2, 4, 5, 8, 11, 13, 20, 30, 32, 47, 51, 52, 53, 55, 58, 59, 62, 75, 76, 78, 80, 81, 86, 89, 93], "definit": [2, 4, 15, 18, 19, 31, 41, 48, 89, 93], "contain": [2, 4, 17, 18, 19, 29, 30, 32, 33, 41, 47, 51, 58, 62, 66, 78, 80, 81, 82, 89, 90, 95], "bidirect": [2, 4, 5, 8, 15, 16, 17, 18, 19, 20, 29, 51, 55, 66, 79, 80, 81, 82, 89, 90, 93, 95], "undirect": [2, 5, 11, 15, 16, 17, 18, 19, 51, 52, 55, 57, 61, 66, 78, 80, 81, 82, 93, 102], "cicl": 2, "To": [2, 4, 48, 62, 74, 76, 78, 83, 84, 90, 91, 95, 98], "illustr": [2, 4, 90], "figur": [2, 4, 39], "4": [2, 5, 36, 41, 80, 82, 86, 88, 89, 93, 95], "add_edg": [2, 4, 5, 8, 18, 19, 51, 58, 78, 90], "": [2, 4, 5, 17, 18, 19, 21, 22, 23, 24, 26, 30, 32, 37, 40, 46, 47, 49, 51, 52, 58, 70, 76, 78, 89, 90, 93, 99, 100], "directed_edge_nam": [2, 4, 15, 16, 17, 18, 19, 51, 55, 79, 80, 81, 82, 93], "g": [2, 4, 5, 8, 11, 13, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 44, 45, 46, 47, 48, 49, 50, 58, 59, 61, 62, 63, 65, 68, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 85, 87, 88, 90, 95], "l": [2, 4, 23, 26, 30, 49], "psh": 2, "circle_edge_nam": [2, 5, 17, 19, 55, 93], "final": [2, 4, 13, 78, 84, 93, 95], "look": [2, 5, 13, 90, 95, 98], "dot_graph": [2, 4, 5], "render": [2, 4, 5, 11, 13, 89], "outfil": [2, 4, 5, 11, 13], "valid_pag": 2, "png": [2, 4, 5, 11, 13], "view": [2, 4, 5, 11, 13, 58, 78, 95], "must": [2, 8, 18, 19, 43, 48, 51, 53, 58, 64, 74, 76, 78, 83, 87, 93, 95], "verifi": 2, "turn": [2, 37, 93], "check": [2, 22, 23, 27, 29, 30, 31, 33, 46, 48, 49, 50, 52, 62, 71, 78, 80, 81, 84, 93, 103], "theorem": [2, 37, 50], "2": [2, 4, 5, 8, 13, 14, 17, 18, 19, 24, 34, 36, 37, 39, 40, 50, 51, 52, 58, 66, 70, 75, 76, 78, 83, 86, 89, 93, 94, 95, 100], "method": [2, 5, 78, 89, 92, 93, 94], "simpli": [2, 18, 19, 51, 55, 84, 89, 95], "return": [2, 4, 5, 8, 15, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 55, 58, 59, 61, 62, 63, 64, 66, 67, 69, 70, 71, 72, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 95], "print": [2, 4, 5, 8, 11, 13, 66, 86], "conditioningsetselect": 2, "pd": [2, 5, 41, 42, 43, 48, 89, 102], "context": [2, 5, 90, 95], "observed_vari": 2, "latent_vari": 2, "state_vari": 2, "init_graph": 2, "networkx": [2, 5, 8, 11, 13, 15, 16, 17, 18, 19, 22, 32, 46, 47, 51, 52, 54, 58, 59, 75, 76, 86, 89, 91, 93, 94, 95, 102], "0x769072db5890": 2, "included_edg": 2, "0x769072db5f90": 2, "excluded_edg": 2, "0x769072db63d0": 2, "num_distribut": 2, "obs_distribut": 2, "intervention_target": 2, "symmetric_diff_map": 2, "sigma_map": [2, 89], "f_node": [2, 17], "num_domain": 2, "domain_map": 2, "s_node": 2, "If": [2, 4, 5, 8, 17, 18, 19, 24, 31, 40, 48, 51, 52, 55, 58, 62, 73, 76, 78, 80, 82, 83, 86, 90, 93, 95], "test": [2, 4, 80, 94, 96, 102, 103], "whether": [2, 20, 23, 27, 29, 31, 32, 33, 47, 48, 49, 50, 52, 62, 73, 74, 78, 93], "algorithm": [2, 4, 5, 18, 19, 51, 80, 81, 82, 90, 93, 96, 99, 102, 103], "work": [2, 4, 53, 78, 80, 81, 89, 90, 93], "correctli": 2, "chang": [2, 48, 76, 78, 80, 82, 89, 90, 93, 95, 100, 101, 102, 103], "By": [2, 4, 8, 15, 16, 17, 18, 19, 27, 40, 48, 51, 53, 58, 73, 76, 78, 83, 85, 87, 89, 93], "remov": [2, 5, 8, 24, 58, 76, 78, 80, 82, 93, 103], "represent": [2, 8, 78, 81, 87, 90, 95], "multipl": [2, 15, 66, 78, 83, 93, 94], "In": [2, 4, 5, 11, 13, 19, 20, 48, 52, 62, 66, 76, 78, 83, 84, 90, 93, 95, 103], "case": [2, 11, 13, 19, 48, 62, 83, 93, 95], "sai": [2, 5], "directli": [2, 18, 19, 51, 53, 57, 58, 78, 93, 95], "caus": [2, 80], "howev": [2, 4, 5, 15, 48, 83, 84, 89, 90, 93, 95], "determin": [2, 50, 76], "logic": 2, "rule": [2, 4, 5, 19, 30, 37, 48, 50, 93], "One": [2, 5, 11, 13, 18, 51, 69, 70, 71, 89, 90, 93], "would": [2, 5, 8, 19, 52, 66, 82, 83, 88, 93], "abl": [2, 98], "adjac": [2, 8, 23, 27, 30, 31, 32, 40, 41, 47, 48, 49, 66, 67, 70, 78], "due": [2, 15, 18, 40, 89, 93, 95], "As": [2, 4, 8], "result": [2, 5, 8, 19, 22, 39, 46, 84, 93, 95], "longer": [2, 5], "remove_edg": [2, 8, 58, 78], "fals": [2, 4, 5, 8, 48, 52, 58, 61, 73, 74, 78, 80, 86, 93], "0x769072dc9f90": 2, "0x769072dca690": 2, "0x769072dcaad0": 2, "jiji": [2, 4, 5, 30, 48, 50], "zhang": [2, 4, 5, 30, 37, 48, 50], "orient": [2, 4, 5, 18, 19, 27, 30, 48, 50, 51, 55, 89, 93], "discoveri": [2, 4, 5, 17, 20, 30, 48, 50, 93, 96], "presenc": [2, 4, 5, 8, 15, 20, 30, 48, 50, 93, 103], "artifici": [2, 4, 5, 20, 30, 48, 50, 80, 81, 82], "intellig": [2, 4, 5, 20, 30, 48, 50, 80, 81, 82], "172": [2, 4, 5, 30, 48, 50], "16": [2, 4, 5, 30, 48, 50, 102], "1873": [2, 4, 5, 30, 48, 50], "1896": [2, 4, 5, 30, 48, 50], "2008": [2, 4, 5, 30, 48, 50], "url": [2, 4, 5, 17, 20, 30, 40, 48, 50], "http": [2, 4, 5, 11, 17, 20, 30, 40, 48, 50, 70, 71, 78, 87, 89, 91], "www": [2, 4, 5, 17, 30, 48, 50], "sciencedirect": [2, 4, 5, 30, 48, 50], "com": [2, 4, 5, 30, 48, 50], "scienc": [2, 4, 5, 17, 30, 48, 50], "articl": [2, 4, 5, 30, 48, 50], "pii": [2, 4, 5, 30, 48, 50], "s0004370208001008": [2, 4, 5, 30, 48, 50], "doi": [2, 4, 5, 17, 30, 40, 48, 50, 80, 81, 82], "org": [2, 4, 5, 11, 17, 30, 40, 48, 50, 70, 78, 87, 91], "10": [2, 4, 5, 11, 13, 17, 30, 40, 48, 50, 66, 73, 80, 81, 82, 102], "1016": [2, 4, 5, 30, 48, 50, 80, 81, 82], "j": [2, 4, 5, 28, 30, 48, 50, 66, 75, 80, 81, 82], "artint": [2, 4, 5, 30, 48, 50, 80, 81, 82], "08": [2, 4, 5, 30, 48, 50, 86], "001": [2, 4, 5, 30, 48, 50], "total": [2, 4, 5, 6, 8, 9, 10, 11, 13, 14, 36, 52, 76, 78, 93, 97], "run": [2, 4, 5, 8, 11, 13, 86, 91], "script": [2, 4, 5, 8, 11, 13, 89], "0": [2, 4, 5, 8, 10, 11, 13, 16, 17, 40, 52, 62, 63, 66, 70, 73, 74, 75, 76, 83, 84, 86, 88, 89, 90, 93, 94, 95, 100], "minut": [2, 4, 5, 8, 11, 13], "969": [2, 6, 97], "second": [2, 4, 5, 8, 11, 13, 78, 81, 89, 93], "estim": [2, 4, 5, 8, 11, 13, 89], "memori": [2, 4, 5, 8, 11, 13, 86, 89], "usag": [2, 4, 5, 8, 11, 13, 89, 90], "166": [2, 6, 97], "mb": [2, 4, 5, 6, 8, 9, 10, 11, 13, 14, 97], "checking_validity_of_a_pag": [2, 6, 97], "ipynb": [2, 4, 5, 8, 11, 13], "py": [2, 4, 5, 6, 8, 9, 11, 13, 14, 91, 97], "galleri": [2, 4, 5, 8, 11, 13, 89, 97], "p": [4, 5, 27, 74, 89, 95], "call": [4, 11, 13, 17, 20, 22, 41, 42, 43, 46, 82, 89, 93], "rel": [4, 48, 90], "where": [4, 5, 8, 16, 17, 18, 19, 27, 32, 33, 47, 51, 52, 58, 66, 75, 78, 84, 89, 90, 93, 95], "everi": [4, 5, 8, 23, 27, 40, 48, 81, 93, 95], "vertex": [4, 27], "either": [4, 5, 17, 20, 34, 66, 67, 76, 78, 89, 95], "ancestor": [4, 30, 44], "x": [4, 5, 8, 11, 13, 16, 17, 18, 19, 40, 42, 43, 51, 52, 55, 66, 75, 76, 80, 81, 82, 83, 87, 89, 93, 95], "y": [4, 5, 8, 11, 13, 16, 17, 18, 19, 40, 51, 52, 55, 66, 76, 80, 81, 82, 87, 89, 93, 95], "other": [4, 5, 8, 11, 13, 19, 33, 66, 76, 78, 89, 93, 94, 95], "word": 4, "two": [4, 5, 8, 15, 18, 19, 23, 30, 43, 48, 49, 66, 76, 78, 79, 89, 90, 93, 95, 102], "cannot": [4, 30, 48, 80, 95], "d": [4, 5, 18, 19, 30, 32, 40, 41, 42, 43, 47, 51, 52, 58, 78, 93, 95], "seper": 4, "make": [4, 5, 20, 58], "activ": [4, 30], "regardless": [4, 30, 78], "what": [4, 5, 19, 20, 30, 76, 93, 100], "variabl": [4, 5, 8, 17, 30, 40, 48, 52, 59, 60, 74, 75, 76, 79, 83, 84, 88, 89, 93, 95], "admg": [4, 11, 13, 16, 18, 19, 49, 51, 64, 66, 69, 71, 81, 90, 93], "x4": 4, "x1": [4, 13], "x2": [4, 13], "x5": 4, "x6": 4, "x3": [4, 13], "l2": 4, "l1": 4, "paper": 4, "see": [4, 5, 11, 13, 16, 17, 30, 34, 50, 56, 57, 66, 67, 70, 71, 76, 78, 84, 87, 89, 90, 93], "inducing_path": [4, 6, 97], "given": [4, 5, 18, 19, 21, 24, 32, 39, 47, 48, 51, 52, 58, 73, 74, 76, 78, 81, 93, 95], "need": [4, 5, 48, 52, 90, 93, 98], "satisfi": 4, "function": [4, 5, 8, 11, 13, 19, 22, 32, 33, 46, 47, 48, 50, 52, 56, 57, 59, 62, 78, 80, 86, 89, 90, 92, 93, 94, 96, 99, 102, 103], "enough": 4, "pair": [4, 15, 16, 17, 18, 19, 23, 28, 32, 33, 47, 49, 51, 52, 54, 66, 78, 89, 93, 95], "c": [4, 5, 15, 22, 27, 29, 32, 46, 47, 48, 89], "skeleton": 4, "sens": [4, 33, 93], "among": [4, 42, 43, 53, 76, 78, 81, 84, 89, 93], "ii": 4, "primit": 4, "add": [4, 5, 8, 15, 16, 18, 19, 21, 51, 52, 54, 58, 73, 78, 90, 91, 93, 95, 102], "now": [4, 5, 8, 85, 95], "ha": [4, 5, 8, 17, 18, 19, 23, 27, 29, 40, 49, 50, 51, 58, 66, 78, 80, 81, 82, 84, 89, 90, 93, 95, 102, 103], "downstream": 4, "effect": [4, 13, 18, 19, 51, 58, 78, 84, 95, 98], "descend": [4, 45], "open": [4, 5, 90], "up": [4, 5, 52, 93], "still": [4, 5, 76, 89], "avail": [4, 91], "should": [4, 8, 18, 19, 51, 53, 57, 58, 78, 89, 90, 95, 99], "diego": [4, 40], "colombo": [4, 40], "marlo": [4, 40], "h": [4, 40], "maathui": [4, 40], "marku": [4, 40], "kalisch": [4, 40], "thoma": [4, 40], "richardson": [4, 40], "high": [4, 40, 74], "dimension": [4, 40, 89, 95], "annal": [4, 40], "statist": [4, 16, 40], "40": [4, 40, 80, 81, 82], "294": [4, 40], "321": [4, 40], "2012": [4, 40], "1214": [4, 40], "11": [4, 39, 40], "aos940": [4, 40], "949": [4, 6, 97], "165": [4, 11, 13], "graphic": [5, 16, 75, 89, 99], "attach": [5, 95], "notion": 5, "each": [5, 8, 11, 13, 16, 17, 18, 19, 32, 33, 47, 51, 54, 58, 73, 74, 76, 78, 83, 86, 87, 88, 89, 93, 95], "miss": [5, 76, 84], "review": 5, "fundament": [5, 90], "nx": [5, 8, 11, 53, 61, 74, 78, 85, 89, 90, 93], "numpi": [5, 52, 66, 67, 69, 74, 86, 89, 93, 99, 102], "np": [5, 64, 66, 89], "panda": [5, 83, 85, 86, 89], "dowhi": [5, 86], "gcm": 5, "set_random_se": 5, "scipi": [5, 52, 84, 86, 93], "stat": [5, 84], "pywhy_nx": [5, 20, 64, 87, 90], "mathemat": 5, "tupl": [5, 8, 16, 17, 18, 19, 27, 28, 30, 42, 43, 48, 51, 52, 58, 62, 65, 76, 78, 89, 93, 95], "v": [5, 8, 18, 19, 22, 27, 40, 46, 48, 51, 55, 58, 62, 78, 81, 82, 89], "u": [5, 11, 13, 18, 19, 27, 40, 48, 51, 55, 58, 62, 75, 78, 89, 90, 95], "f": [5, 8, 16, 17, 89, 93, 95], "endogen": [5, 89], "observ": [5, 83, 85, 89, 95], "exogen": [5, 72, 73, 89, 95], "distribut": [5, 17, 73, 75, 76, 84, 89], "taken": [5, 48, 78], "togeth": 5, "four": [5, 78], "mechan": [5, 76], "problem": [5, 17], "almost": [5, 23, 29, 49, 103], "alwai": [5, 30, 52, 74, 80, 82, 89, 90, 93, 95], "argument": [5, 11, 13, 15, 16, 17, 18, 19, 48, 51, 52, 54, 55, 58, 78, 86, 89, 93, 95, 102], "parent": [5, 18, 19, 27, 51, 55, 73, 74, 75, 76, 89, 95], "ani": [5, 8, 18, 19, 20, 21, 22, 23, 24, 27, 30, 31, 33, 40, 41, 42, 43, 44, 45, 46, 48, 49, 51, 52, 55, 58, 59, 62, 64, 65, 66, 69, 70, 72, 74, 76, 78, 83, 87, 89, 93, 95], "even": [5, 82], "though": 5, "typic": [5, 8, 48], "unknown": [5, 17], "ground": 5, "truth": 5, "evalu": 5, "build": [5, 90], "our": [5, 90, 95], "intuit": [5, 30, 48], "random": [5, 16, 17, 72, 73, 74, 75, 76, 83, 84, 85, 88, 95], "seed": [5, 72, 75, 76, 85], "reproduc": [5, 78], "12345": 5, "rng": [5, 95], "randomst": [5, 72], "mycustommodel": 5, "predictionmodel": 5, "def": 5, "__init__": 5, "self": 5, "coeffici": 5, "fit": [5, 89], "noth": 5, "know": [5, 93], "pass": [5, 11, 13, 18, 19, 48, 51, 55, 83, 86, 95], "predict": [5, 40], "clone": [5, 91], "don": [5, 78], "t": [5, 52, 53, 63, 78, 83, 88, 89, 93], "realli": 5, "actual": [5, 58, 78, 94], "1234": 5, "xy": [5, 11], "z": [5, 8, 11, 40, 52, 66, 80, 81, 82, 93, 95], "w": [5, 11], "_________": 5, "digraph": [5, 8, 11, 15, 16, 17, 18, 19, 34, 36, 51, 54, 55, 59, 60, 61, 73, 74, 75, 76, 78, 79, 87, 90, 93], "causal_model": 5, "probabilisticcausalmodel": 5, "set_causal_mechan": 5, "scipydistribut": 5, "binom": [5, 76], "5": [5, 9, 13, 22, 34, 46, 84, 86, 88, 95, 97], "n": [5, 10, 18, 19, 22, 46, 51, 55, 75, 78, 95], "9": [5, 40, 52, 91, 93, 102], "additivenoisemodel": 5, "prediction_model": 5, "noise_model": 5, "8": [5, 80, 86, 103], "paramet": [5, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 59, 61, 62, 63, 64, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 93], "anyth": [5, 89, 95], "ensur": [5, 81], "fcm": 5, "correct": [5, 18, 19, 51, 55, 78], "local": [5, 86, 95], "hash": 5, "get": [5, 8, 11, 13, 75, 76, 78], "inconsist": [5, 24, 76, 89], "error": [5, 21, 33, 78, 94], "modifi": [5, 22, 46, 75, 76, 77, 83, 93], "afterward": 5, "without": [5, 11, 13, 15, 19, 20, 53, 58, 78, 84, 89, 93], "updat": [5, 18, 19, 51, 58, 78], "empti": [5, 30, 52, 80, 81, 82, 93, 95], "small": 5, "workaround": 5, "pre": [5, 66, 67, 102], "datafram": [5, 83, 85], "column": [5, 64, 69, 70, 83, 88], "sampl": [5, 37, 73, 74, 75, 76, 85, 89, 102], "draw_sampl": 5, "num_sampl": 5, "500": [5, 83], "head": 5, "col": 5, "show": [5, 8, 11, 86], "collid": [5, 27, 30, 31, 37, 40, 81], "collis": 5, "arrow": [5, 94], "00": [5, 6, 9, 10, 14, 97], "100": [5, 103], "900": 5, "30it": 5, "3": [5, 6, 8, 13, 17, 18, 19, 27, 41, 51, 58, 70, 76, 78, 82, 86, 88, 91, 93, 94, 97, 103], "dtype": 5, "0x768fb1266e10": 5, "suffici": [5, 18, 50, 51, 93], "assumpt": [5, 18, 19, 51, 53, 93, 95], "queri": [5, 8, 52, 78, 93], "list": [5, 17, 27, 28, 30, 32, 36, 47, 48, 52, 54, 58, 59, 64, 65, 69, 70, 74, 75, 76, 78, 83, 88, 89, 90, 93, 95, 102, 103], "predecessor": [5, 95], "children": [5, 18, 19, 51, 55, 89, 95], "successor": 5, "explor": [5, 27, 95], "statement": [5, 23, 89], "impli": [5, 18, 51, 70, 76, 93], "d_separ": [5, 81], "home": 5, "circleci": 5, "project": [5, 70, 91, 102, 103], "intro": [5, 6, 97], "intro_causal_graph": [5, 6, 11, 13, 97], "140": 5, "deprecationwarn": 5, "deprec": [5, 89, 90], "v3": 5, "pleas": [5, 78, 90, 94], "is_d_separ": [5, 81], "143": 5, "semi": [5, 19, 22, 32, 46, 47, 93, 99, 103], "possibli": [5, 40, 41, 42, 43, 61, 75, 76, 78, 95, 99, 103], "depict": [5, 52, 93], "just": [5, 8, 15, 16, 17, 18, 19, 51, 55, 85, 91, 93, 94, 95], "set_nodes_as_latent_confound": [5, 11], "anymor": 5, "form": [5, 23, 31, 32, 33, 40, 47, 84, 92, 93, 94], "cluster": 5, "compon": [5, 15, 20, 41, 76, 89], "short": 5, "c_compon": [5, 15, 89], "m": [5, 20, 80, 81, 82, 95, 102], "similarli": [5, 78, 80, 93, 95], "m_separ": [5, 102], "bidirected_edge_nam": [5, 15, 16, 17, 19, 55, 79, 80, 81, 82, 93], "after": [5, 24, 48, 50], "besid": [5, 48, 78], "commonli": 5, "base": [5, 18, 19, 20, 24, 36, 51, 75, 78, 90, 93, 103], "seek": 5, "reconstruct": 5, "part": [5, 22, 46, 89], "next": [5, 13, 93, 95], "section": [5, 95], "briefli": 5, "overview": [5, 98], "usual": [5, 89, 90], "so": [5, 11, 19, 74, 78, 80, 89, 90, 93, 94, 95], "github": [5, 71, 90], "why": [5, 91], "_": [5, 89], "repo": 5, "relev": [5, 52, 74, 78, 86, 89, 90, 93, 95], "assum": [5, 58, 83, 85, 90, 93, 95, 96], "uncertain": [5, 31, 40], "via": [5, 8, 18, 19, 51, 55, 58, 78, 91], "ll": 5, "earlier": 5, "learnt": 5, "variant": 5, "pc": [5, 18, 51, 93], "let": [5, 11, 13], "add_edges_from": [5, 11, 13, 18, 19, 51, 58, 78], "undirected_edge_nam": [5, 11, 15, 16, 17, 18, 19, 51, 55, 80, 81, 82, 93], "unshield": [5, 37, 48], "present": [5, 8, 15, 18, 19, 20, 23, 29, 66, 80, 81, 82, 88, 93], "origin": [5, 17, 50, 58, 78, 95], "orient_uncertain_edg": [5, 11, 18, 19, 51, 55], "allow": [5, 8, 16, 18, 19, 40, 51, 53, 66, 81, 84, 89, 93, 94, 95], "complex": [5, 19, 93, 95], "judea": [5, 16, 17], "pearl": [5, 16, 17], "reason": 5, "cambridg": 5, "univers": 5, "press": [5, 20, 40], "usa": 5, "2nd": 5, "edit": 5, "2009": 5, "isbn": [5, 40], "052189560x": 5, "peter": [5, 20, 40], "spirt": [5, 40], "clark": [5, 40], "glymour": [5, 40], "richard": [5, 40], "schein": [5, 40], "causat": [5, 40], "search": [5, 22, 40, 41, 42, 43, 46, 48, 81], "volum": [5, 20, 40], "81": [5, 40], "mit": [5, 40], "01": [5, 9, 14, 40, 97], "1993": [5, 16, 40], "978": [5, 40], "4612": [5, 40], "7650": [5, 40], "1007": [5, 40], "2748": [5, 40], "086": [5, 6, 97], "250": 5, "04": 6, "004": 6, "execut": [6, 9, 10, 14, 86, 97], "file": [6, 9, 10, 14, 68, 71, 86, 94, 97], "auto_exampl": [6, 9, 10, 14], "mem": [6, 9, 10, 14, 97], "introduct": [6, 15, 18, 19, 78, 81, 87, 97], "graph": [6, 7, 9, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 91, 96, 97, 99, 100, 102, 103], "02": [6, 97], "249": [6, 97], "6": [6, 14, 80, 86, 97, 102], "164": [6, 14, 97], "compris": [8, 78, 89], "user": [8, 16, 78, 86, 89, 90, 95], "arbitrari": [8, 78], "intern": [8, 15, 16, 18, 33, 51, 55, 90, 93], "semant": 8, "normal": [8, 74, 75], "appropri": 8, "relat": [8, 11, 13, 15, 89, 90, 93], "matplotlib": [8, 86], "pyplot": 8, "plt": 8, "pg": 8, "compos": 8, "directed_g": 8, "bidirected_g": 8, "add_nodes_from": [8, 78], "edge_typ": [8, 18, 19, 51, 54, 58, 78, 90, 93], "iv": 8, "po": [8, 11, 13, 87, 88], "spring_layout": [8, 11], "visual": [8, 13, 14, 15, 18, 19, 78, 87, 97], "fig": 8, "ax": 8, "subplot": 8, "draw_networkx": 8, "get_graph": [8, 78, 90], "set_titl": 8, "instrument": 8, "tight_layout": 8, "block": 8, "is_direct": [8, 78], "multigraph": [8, 78], "is_multigraph": [8, 78], "bidirected_edg": [8, 15, 19, 55, 93], "0x768fb00f9e50": 8, "0x7690724fcfd0": 8, "similar": [8, 19, 22, 32, 46, 47, 73, 78, 89, 90, 93], "default": [8, 13, 15, 16, 17, 18, 19, 21, 24, 27, 30, 33, 40, 41, 42, 43, 48, 51, 52, 53, 54, 58, 59, 72, 73, 74, 75, 76, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 95], "store": [8, 11, 13, 15, 18, 19, 64, 71, 78, 92, 93, 94], "insid": [8, 102], "assert": [8, 90], "order": [8, 11, 18, 19, 22, 36, 46, 51, 52, 53, 55, 63, 64, 69, 70, 78, 83, 88, 93, 95], "len": [8, 78], "number_of_nod": [8, 78], "new": [8, 78, 90, 95, 100], "has_nod": [8, 78], "add_nod": 8, "remove_nod": 8, "per": [8, 84], "specifi": [8, 11, 18, 19, 51, 58, 76, 78, 79, 84, 90, 93, 95], "when": [8, 18, 19, 24, 48, 51, 58, 78, 80, 84, 86, 89, 90, 95, 100], "you": [8, 19, 76, 78, 83, 90, 91, 93, 94, 98], "well": [8, 36, 78, 95], "has_edg": [8, 62, 78, 90], "standard": [8, 94], "adj": [8, 78], "degre": [8, 78], "instead": [8, 78, 83], "moreov": [8, 75, 76, 78], "neighbor": [8, 78], "uni": 8, "counterpart": 8, "mani": [8, 78, 90], "connect": [8, 16, 18, 20, 28, 48, 51, 52, 55, 76, 78, 79, 81, 84, 93], "iter": [8, 15, 18, 19, 51, 53, 55, 63, 78, 93], "through": [8, 78, 89, 95], "item": [8, 78], "dictionari": [8, 11, 13, 18, 19, 51, 58, 78, 88, 90, 95], "187": [8, 9, 97], "171": 8, "plot_mixed_edge_graph": [8, 9, 97], "mixededg": [9, 97], "mixededgegraph": [9, 15, 16, 18, 19, 20, 58, 64, 79, 85, 87, 90, 93, 97, 102], "170": [9, 97], "000": 10, "choos": [11, 13, 24], "place": [11, 13, 20, 75, 76, 79], "fix": [11, 76, 100, 101, 102, 103], "easili": 11, "creat": [11, 13, 25, 52, 59, 76, 78, 90, 93], "posit": [11, 13, 87, 88, 102], "label": [11, 18, 19, 34, 51, 58, 78, 79, 87, 102], "altern": 11, "own": [11, 94], "manual": [11, 71, 78], "softwar": [11, 13, 90], "dagitti": [11, 99], "arrai": [11, 13, 52, 64, 66, 67, 69, 70, 83, 88, 89, 93, 94, 102], "15471958": 11, "42925134": 11, "7990356": 11, "90151211": 11, "36916753": 11, "62354034": 11, "6548282": 11, "09580111": 11, "92997669": 11, "cpdag": [11, 13, 19, 25, 33, 38, 39, 51, 64, 67, 69, 70, 71, 93, 102, 103], "dummi": [11, 13], "borrow": [11, 13], "pos_g": [11, 13], "k": [11, 58, 78], "inspect": [11, 13], "notic": [11, 13], "kei": [11, 13, 15, 16, 18, 19, 51, 52, 54, 58, 78, 87, 88, 89, 93, 95], "coordin": [11, 13, 87], "valu": [11, 13, 15, 16, 18, 19, 51, 52, 54, 58, 66, 67, 73, 74, 76, 78, 87, 89, 93, 94, 95], "dot_g": [11, 13], "dot_admg": 11, "dot_cpdag": 11, "dot_pag": 11, "engin": [11, 13, 90], "neato": [11, 13], "leverag": [11, 95], "inform": [11, 16, 17, 67, 78, 84, 86, 87, 89, 95], "document": [11, 56, 57, 70, 71, 78, 87, 89, 90, 92, 93], "doc": [11, 78, 87, 89], "415": [11, 14, 97], "draw_and_compare_graphs_with_same_layout": [11, 14, 97], "rather": [13, 19, 78, 93, 95], "messi": 13, "output": [13, 66, 68, 83, 86, 93, 95], "stationarytimeseriesdigraph": [13, 53, 59, 60, 84, 93], "timeseries_layout": 13, "max_lag": [13, 52, 53, 54, 56, 57, 58, 59, 60, 83, 84, 85, 93], "ts_edg": 13, "first": [13, 16, 22, 46, 48, 50, 76, 78, 80, 81, 89, 91, 93, 95], "default_g": 13, "nice": 13, "variable_ord": [13, 88], "scale": [13, 88], "7": [13, 82, 86], "33333333": 13, "926": [13, 14, 97], "plot_timeseries_graph": [13, 14, 97], "341": 14, "incoming_directed_edg": [15, 16, 17, 18, 19, 51, 55, 93], "none": [15, 16, 17, 18, 19, 21, 22, 23, 24, 26, 27, 30, 40, 41, 42, 43, 46, 48, 49, 51, 52, 53, 54, 55, 56, 57, 58, 72, 73, 74, 75, 76, 78, 80, 82, 83, 84, 85, 86, 87, 88, 89, 93, 95], "incoming_bidirected_edg": [15, 16, 17, 19, 55, 93], "incoming_undirected_edg": [15, 16, 17, 18, 19, 51, 55, 93], "str": [15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 33, 40, 41, 42, 43, 44, 45, 46, 48, 51, 54, 55, 58, 59, 62, 64, 65, 68, 69, 70, 71, 72, 78, 79, 80, 81, 82, 83, 87, 93], "attr": [15, 16, 17, 18, 19, 51, 52, 53, 54, 55, 56, 57, 58, 78, 87, 93], "constitut": [15, 50, 89, 93], "did": [15, 93], "while": [15, 89, 90, 93], "input": [15, 16, 17, 18, 19, 51, 52, 74, 75, 78, 92, 93, 95], "option": [15, 16, 17, 18, 19, 21, 22, 24, 27, 33, 40, 41, 42, 43, 46, 48, 51, 52, 53, 54, 58, 59, 64, 72, 73, 74, 75, 76, 78, 83, 84, 85, 87, 88, 93], "initi": [15, 16, 17, 18, 19, 51, 52, 78, 83, 85, 93], "accept": [15, 16, 17, 18, 19, 51, 93], "keyword": [15, 16, 18, 19, 51, 52, 54, 58, 78, 90, 93, 95, 102], "attribut": [15, 16, 18, 19, 24, 34, 51, 52, 54, 58, 74, 75, 76, 77, 78, 87, 89, 93, 95], "subgraph": [15, 16, 17, 18, 19, 40, 51, 58, 78, 93], "underneath": [15, 18, 19, 93], "hood": [15, 18, 19, 93], "non": [15, 18, 23, 27, 30, 31, 33, 49, 53, 66, 78, 80, 81, 93, 95], "stand": [15, 18, 89, 93], "indic": [15, 17, 18, 19, 23, 29, 49, 50, 52, 66, 89, 93, 95], "access": [15, 18, 19, 51, 58, 78, 89, 93], "sub_directed_graph": [15, 18, 19, 51, 55, 93], "Their": [15, 18, 19, 93], "format": [15, 18, 19, 52, 68, 71, 93, 94], "directed_edg": [15, 18, 19, 51, 55, 93], "sub_bidirected_graph": [15, 19, 55, 93], "sub_undirected_graph": [15, 18, 19, 51, 55, 93], "undirected_edg": [15, 18, 19, 51, 55, 93], "cycl": [15, 18, 20, 23, 29, 33, 49, 84, 90, 93, 103], "exist": [15, 16, 18, 22, 30, 46, 58, 73, 74, 75, 76, 78, 80, 82, 90, 93, 96], "beyond": [15, 93], "properti": [15, 18, 19, 51, 55, 78, 93], "map": [15, 16, 17, 18, 19, 51, 55, 66, 67, 78, 89, 90, 93, 94, 95], "edgeview": [15, 18, 19, 51, 55, 78], "trivial": [15, 48], "themself": 15, "comp": 15, "sub": [15, 18, 19, 20, 51, 55, 78], "augment": [16, 17, 21, 24, 80, 93, 95], "diagram": [16, 17, 76, 99], "intervent": [16, 17, 72, 89, 93, 102], "were": [16, 79], "introduc": 16, "hard": 16, "soft": [16, 17, 72], "explicit": [16, 89], "tbd": 16, "guid": [16, 89, 90], "exactli": [16, 17, 58], "index": [16, 17, 52, 64, 70, 90, 93], "number": [16, 17, 18, 19, 21, 22, 24, 28, 46, 51, 58, 73, 74, 76, 78, 81, 82, 83, 84, 85, 89, 93, 95], "appli": [16, 17, 20, 50, 72, 73, 75, 89], "rightarrow": [16, 17, 66, 76, 95], "regular": [16, 17, 76], "aspect": [16, 90], "proceed": [16, 17, 20], "49th": 16, "session": 16, "institut": 16, "page": [16, 26, 90, 100], "399": 16, "401": 16, "incoming_circle_edg": [17, 19, 55, 93], "been": [17, 50, 80], "It": [17, 23, 41, 78, 88, 89, 95], "handl": [17, 21, 24, 66, 78, 99], "target": [17, 22, 46, 72, 77, 89, 93], "integ": [17, 22, 46, 74, 78, 89, 95], "sigma": 17, "special": [17, 19, 48, 89, 93], "known": [17, 90, 93, 95], "domain": [17, 21, 24, 28, 76], "environ": 17, "amin": 17, "jaber": 17, "murat": 17, "kocaoglu": 17, "karthikeyan": 17, "shanmugam": 17, "elia": 17, "bareinboim": 17, "character": [17, 93], "advanc": 17, "neural": 17, "process": [17, 83, 84, 85, 93, 95], "system": [17, 86, 95], "33": 17, "9551": 17, "9561": 17, "2020": [17, 20, 86], "2019": [17, 80, 81, 82], "fusion": 17, "nation": 17, "academi": 17, "113": 17, "27": 17, "7345": 17, "7352": 17, "juli": 17, "2016": 17, "publish": 17, "pna": 17, "content": 17, "1073": 17, "1510507113": 17, "uncertainti": [18, 19, 20, 51, 93], "b": [18, 29, 32, 47, 51, 70, 80, 81, 82, 93], "implicit": [18, 19, 51, 93], "score": [18, 51, 93], "ge": [18, 51, 93], "approach": [18, 19, 51, 90, 93, 102], "suspect": [18, 51, 93], "directino": [18, 93], "u_of_edg": [18, 19, 51, 58, 62, 78], "v_of_edg": [18, 19, 51, 58, 62, 78], "automat": [18, 19, 51, 52, 58, 78, 93], "alreadi": [18, 19, 48, 51, 58, 78, 83, 89, 95], "u_for_edg": [18, 19, 51, 58, 78], "v_for_edg": [18, 19, 51, 58, 78], "string": [18, 19, 51, 58, 78, 87, 89, 95], "hashabl": [18, 19, 51, 58, 78], "assign": [18, 19, 51, 58, 69, 70, 74, 78, 95], "collect": [18, 19, 51, 58, 78], "ebunch_to_add": [18, 19, 51, 58, 78], "twice": [18, 19, 51, 58, 78], "duplic": [18, 19, 51, 58, 78], "ebunch": [18, 19, 51, 58, 78], "take": [18, 19, 41, 51, 58, 75, 76, 78, 90, 92, 93, 95], "preced": [18, 19, 51, 58, 78, 95], "int": [18, 19, 21, 22, 24, 27, 28, 30, 31, 40, 41, 42, 43, 44, 45, 46, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 64, 65, 69, 70, 72, 74, 75, 76, 78, 83, 84, 85, 88, 93], "float": [18, 19, 22, 24, 27, 30, 31, 40, 41, 42, 43, 44, 45, 46, 48, 51, 55, 58, 59, 62, 64, 65, 69, 70, 72, 73, 74, 75, 76, 78, 83, 84, 88], "point": [18, 19, 20, 22, 46, 51, 52, 53, 55, 58, 62, 79, 83, 84, 85, 88, 89, 93, 95], "possible_children": [18, 19, 51, 55], "consid": [18, 19, 22, 46, 48, 51, 55, 58, 85, 89, 95], "possible_par": [18, 19, 51, 55], "term": [19, 93, 95, 99], "essenti": [19, 93], "extend": [19, 93], "sub_circle_graph": [19, 55, 93], "circle_edg": [19, 55, 93], "exponenti": [19, 93], "increas": [19, 93], "occur": [19, 72, 83, 93], "main": [19, 78, 93], "complic": [19, 90, 93], "aris": [19, 93], "combin": [19, 93, 95], "abov": [19, 83, 93, 95], "certain": [19, 48, 90, 93], "kind": [19, 78, 93], "matter": [19, 93], "loss": [19, 93], "deal": [19, 93], "flip": [19, 93], "discuss": [19, 93, 95], "dictat": [19, 93], "sort": [19, 36, 93, 95], "There": [19, 71, 78, 93], "opposit": [19, 93], "qualifi": 19, "yield": [19, 78], "directed_edge_typ": 20, "bidirected_edge_typ": 20, "copi": [20, 58, 70, 78], "bool": [20, 23, 27, 29, 30, 31, 32, 33, 47, 48, 49, 50, 51, 52, 53, 55, 58, 59, 61, 62, 73, 74, 78, 80, 81, 86, 93], "acyclifi": 20, "cyclic": [20, 61, 102], "aci": 20, "replac": [20, 78, 80], "strongli": 20, "fulli": [20, 79, 95], "Then": [20, 50, 66, 76, 91, 95], "sc": 20, "made": 20, "jori": 20, "mooij": 20, "tom": 20, "claassen": 20, "jona": 20, "david": [20, 34, 36, 39], "sontag": 20, "editor": 20, "36th": 20, "confer": 20, "uai": 20, "124": 20, "machin": [20, 34, 36, 39], "research": [20, 34, 36, 39, 90], "1159": 20, "1168": 20, "pmlr": 20, "03": 20, "06": [20, 97], "aug": 20, "mlr": 20, "v124": 20, "mooij20a": 20, "html": [20, 78], "n_domain": [21, 24, 76], "on_error": [21, 33], "augmentedgraph": [21, 24, 93, 102], "ignor": [21, 24, 30, 33, 58, 78], "warn": [21, 24, 71, 78, 89], "cutoff": [22, 46], "depth": [22, 46], "stop": [22, 46], "length": [22, 40, 41, 42, 43, 46, 64, 69, 70, 83, 89], "veri": [22, 32, 46, 47, 90], "simple_path": [22, 32, 46, 47], "all_simple_path": [22, 46], "larg": [22, 46, 89, 94], "long": [22, 46], "runtim": [22, 46, 81, 82], "has_path": [22, 46], "befor": [22, 46, 48, 95], "r": [22, 46, 70, 80, 82, 95, 99], "sedgewick": [22, 46], "addison": [22, 46], "weslei": [22, 46], "profession": [22, 46], "3rd": [22, 46, 83], "ed": [22, 46], "2001": [22, 46], "step": 23, "involv": 23, "is_valid": [23, 49, 50], "boolean": [23, 29, 49, 50, 81], "all_poss_snod": 24, "comput": [24, 39, 41, 42, 43, 48, 61, 75, 76, 78, 95], "invari": [24, 76, 95], "proce": 24, "domain_id": [24, 95], "1877": 26, "max_path_length": [27, 40, 41, 42, 43, 48], "discrimin": 27, "least": 27, "maximum": [27, 28, 40, 41, 42, 43, 48, 52, 53, 54, 59, 84, 85, 93], "distanc": [27, 48], "1000": [27, 40, 41, 42, 43, 48, 83, 84, 85], "explored_nod": 27, "disc_path": 27, "found_discriminating_path": 27, "wa": [27, 33, 80, 82], "max_numb": 28, "id": [28, 95], "connected_pair": 28, "adc": 29, "adc_pres": 29, "node_x": [30, 40, 41, 42, 43], "node_i": [30, 40, 41, 42, 43], "destin": 30, "otherwis": [30, 78, 82], "therefor": [30, 66, 84, 90, 94, 95], "along": [30, 40], "henc": [30, 48, 95], "node1": 31, "node2": 31, "node3": 31, "noncollid": 31, "is_noncollid": 31, "nonempti": [32, 47], "sequenc": [32, 47, 78], "appear": [32, 47, 48, 78], "onc": [32, 47, 78], "toward": [32, 47, 89], "is_simple_path": [32, 47], "most": [33, 89, 90, 93], "compliant": [33, 93], "constrain": 33, "compel": 34, "revers": 34, "maxwel": [34, 36, 39], "chicker": [34, 36, 39], "bayesian": [34, 36, 39], "network": [34, 36, 39, 84], "journal": [34, 36, 39], "445": [34, 36, 39], "498": [34, 36, 39], "2002": [34, 36, 39], "provabl": 35, "tractabl": 35, "featur": [35, 78, 89, 90, 100, 101, 102, 103], "thu": [35, 91], "produc": 35, "topolog": [36, 95], "accord": [36, 66, 67], "obei": 36, "meek": 37, "dsep": 40, "characterist": 40, "subpath": 40, "tripl": 40, "triangl": 40, "meet": 40, "fact": 40, "shield": 40, "smaller": [41, 42, 43], "subset": [41, 42, 43, 76], "intersect": 41, "biconnect": 41, "restrict": [41, 42, 43], "stationarytimeseriespag": [42, 43, 93], "pdst": 42, "pds_t_set": [42, 43], "lag": [42, 43, 52, 53, 54, 58, 59, 62, 63, 83, 84, 85, 88, 89, 93], "being": [42, 43, 78, 89, 95], "less": [42, 43, 58, 89], "max": [42, 43, 52, 58, 62, 63, 88, 93], "pdst_path": 43, "addit": [43, 48, 72, 75, 84, 86, 87, 90, 93, 95], "first_nod": 48, "second_nod": 48, "force_circl": 48, "forbid_nod": 48, "uncov": [48, 102], "explan": 48, "could": [48, 52, 93], "mean": [48, 75, 76, 78, 93, 95], "previou": [48, 83], "travers": 48, "forbidden": 48, "immedi": 48, "third": 48, "come": 48, "r5": 48, "prevent": 48, "maxim": 49, "bi": 49, "said": [50, 95], "establish": 50, "back": 50, "reconvert": 50, "incoming_graph_data": [52, 53, 56, 57, 93], "check_time_direct": [52, 93], "repeat": [52, 93], "themselv": [52, 93], "cross": [52, 93], "product": [52, 93], "to_networkx_graph": [52, 93], "dict": [52, 74, 78, 87, 88, 93], "2d": [52, 88, 89, 93], "spars": [52, 93], "matrix": [52, 66, 89, 93], "direction": [52, 53, 93], "properli": [52, 93], "delet": [52, 76, 84, 93], "depend": [52, 83, 86, 91, 93], "enabl": [53, 93, 95], "forward": [53, 93], "serv": [53, 93], "layer": [53, 93, 95], "imbu": [56, 57, 58, 93, 95], "basetimeseriesgraph": [56, 57, 93], "add_homologous_edg": 58, "homolog": [58, 62, 93], "tsnode": [58, 62, 89, 93], "absolut": 58, "equal": [58, 74, 83], "preserv": [58, 89], "as_view": [58, 78], "read": [58, 78, 89], "to_direct": [58, 78], "node_attr_dict_factori": [58, 78], "alia": [58, 78], "tsdict": 58, "node_dict_factori": [58, 78], "networkxerror": [58, 78], "remove_edges_from": [58, 78], "Will": [58, 78, 86], "fail": [58, 78, 82], "silent": [58, 78], "remove_homologous_edg": 58, "include_contemporan": 59, "create_us": [59, 60], "analog": [59, 93], "_description_": 59, "func": [59, 95], "include_self_loop": 61, "summari": [61, 85], "timeseriesdigraph": [61, 93], "summary_g": 61, "_must_": 62, "timeseriesgraph": [63, 88, 93], "arr": [64, 66, 69, 70], "ndarrai": [64, 65, 83], "arr_idx": [64, 69, 70], "graph_typ": [64, 69, 71], "shape": [64, 66, 67, 69, 70, 83, 84, 85, 87, 89], "n_node": [64, 66, 67, 69, 70, 84, 85], "row": [64, 69, 70, 88, 89], "causal_graph": [66, 67], "instanc": [66, 67, 68, 71, 83, 89], "numpy_graph": [66, 67], "ijth": 66, "entri": [66, 89, 95], "zero": 66, "symmetr": [66, 89], "jith": 66, "20": 66, "edge_to_value_map": [66, 69], "pcalg": [66, 67, 70, 99, 102], "numer": [66, 78, 90], "treat": [66, 78], "leftrightarrow": [66, 95], "element": [66, 93, 99], "21": [66, 86, 102], "issu": [66, 90, 94], "nodelist": 66, "bow_graph": 66, "numpy_to_graph": 66, "pcalg_to_graph": 67, "filenam": [68, 71], "tetrad": [68, 71, 99, 102], "text": [68, 71, 75, 94], "write": [68, 86], "enumer": [69, 70, 94], "amat_typ": 70, "pcalgpagendpoint": 70, "amattyp": 70, "cran": 70, "web": 70, "pdf": 70, "conveni": 70, "amat": 70, "No": [70, 93], "edgemark": 70, "oppos": 70, "matric": 70, "cmu": 71, "phil": 71, "io": [71, 89, 100], "guarante": 71, "your": [71, 90], "adher": [71, 89], "random_st": [72, 73, 74, 75, 76, 83, 84, 85], "interven": 72, "simultanen": 72, "perturb": 72, "gaussian_noise_funct": [72, 75, 76, 95], "nois": [72, 73, 74, 95], "cpd": [73, 95], "tabularcpd": [73, 74, 95], "noise_ratio": [73, 74, 95], "overwrit": [73, 74], "probabl": [73, 74, 84, 89, 95], "wrapper": [73, 102], "around": [73, 88, 90, 95], "bayesiannetwork": 73, "add_cpd": 73, "tabl": [73, 95], "state": [73, 83, 84, 95], "associ": [73, 78, 89, 95], "ratio": [73, 74, 88], "uniform": [73, 74, 95], "90": 73, "cardinality_lim": 74, "weight_lim": 74, "noise_ratio_lim": 74, "cardin": 74, "pgmpy": [74, 95], "parent_funct": [74, 75, 76, 95], "exogenous_funct": [74, 95], "exogenous_distribut": [74, 95], "cpt": [74, 95], "weight": [74, 75, 76, 78, 84, 94, 95], "categori": 74, "choic": [74, 78, 93], "rang": 74, "binari": 74, "sum": [74, 78], "low": [74, 90], "randomgener": 74, "alter": [74, 95], "node_mean_lim": [75, 76], "node_std_lim": [75, 76], "edge_funct": [75, 76], "callabl": [75, 76, 84, 89, 95], "edge_weight_lim": [75, 76], "parametr": 75, "uniformli": [75, 76, 95], "limit": 75, "fashion": [75, 88, 90], "x_i": 75, "sum_": 75, "w_j": 75, "f_j": 75, "x_j": 75, "epsilon_i": 75, "sim": 75, "mu_i": 75, "sigma_i": 75, "lower": [75, 76], "upper": [75, 76, 94], "bound": [75, 76], "std": [75, 76, 95], "iid": [75, 76], "transform": [75, 76], "nonlinear": [75, 76, 95], "lambda": [75, 76], "ident": [75, 76, 78], "linear_gaussian": [75, 76, 95], "n_nodes_with_s_nod": 76, "n_invariances_to_tri": 76, "multi": 76, "particular": 76, "across": [76, 78, 84, 89, 93], "split": 76, "make_graph_linear_gaussian": [76, 102], "n_": 76, "randomli": [76, 95], "remain": 76, "At": 76, "keep": [76, 88], "g1": 77, "g2": 77, "link": [78, 89, 100], "experiment": [78, 89, 99], "meant": 78, "caution": [78, 90], "multidigraph": 78, "mention": 78, "below": [78, 89, 90], "match": 78, "entir": 78, "add_edge_typ": [78, 90], "edge_subgraph": 78, "cach": [78, 89], "few": [78, 93], "wherea": 78, "__contains__": 78, "__getitem__": 78, "__iter__": 78, "__len__": 78, "hold": 78, "itself": [78, 89], "behav": 78, "idiom": 78, "loop": 78, "nbr": 78, "datadict": 78, "adjacencyview": 78, "clear_edge_typ": 78, "clear": 78, "shallow": 78, "deepcopi": 78, "docstr": [78, 89], "peopl": 78, "might": [78, 90], "nbunch": 78, "degreeview": 78, "report": [78, 86], "incid": 78, "deg_dict": 78, "request": [78, 90], "ddict": 78, "quietli": 78, "out": [78, 88, 90, 95], "get_edge_data": 78, "doesn": 78, "edge_dict": 78, "graph_attr_dict_factori": 78, "keyerror": 78, "edge_ind": 78, "identifi": [78, 89], "technic": [78, 83, 89], "control": 78, "nbunch_it": 78, "membership": 78, "niter": 78, "number_of_edge_typ": 78, "number_of_edg": [78, 90], "count": 78, "nedg": 78, "size": 78, "todo": [78, 95], "expect": [78, 90], "subclass": 78, "attempt": 78, "contrast": 78, "deep": 78, "transfer": 78, "to_undirect": 78, "desir": 78, "unless": [78, 93], "uc_label": 79, "g_copi": 79, "minim": [80, 82, 89, 102], "testminsep": 80, "line": [80, 82], "neq": 80, "r_x": 80, "r_y": 80, "deem": [80, 82], "necessari": [80, 82], "moral": 80, "candid": 80, "later": [80, 82], "largest": [80, 82], "vertic": [80, 81, 82], "is_minimal_m_sep": 80, "els": 80, "van": [80, 81, 82], "der": [80, 81, 82], "zander": [80, 81, 82], "li\u015bkiewicz": [80, 81, 82], "textor": [80, 81, 82], "adjust": [80, 81, 82], "criteria": [80, 81, 82], "framework": [80, 81, 82], "vol": [80, 81, 82], "270": [80, 81, 82], "pp": [80, 81, 82], "2018": [80, 81, 82], "12": [80, 81, 82], "006": [80, 81, 82], "testsep": [81, 82], "further": 81, "breadth": 81, "findsep": 82, "math": 82, "findminsep": 82, "anterior": 82, "union": 82, "var_arr": [83, 85], "n_time": [83, 84, 85], "n_realiz": [83, 84], "var_nam": 83, "var": [83, 84, 85], "arraylik": [83, 84, 85, 88], "n_variabl": [83, 84], "vector": [83, 89], "auto": 83, "regress": 83, "dimens": 83, "autoregress": [83, 85], "realiz": [83, 84], "node_nam": 83, "multivari": [83, 95], "p_time_self": 84, "p_time_var": 84, "p_contemporan": 84, "weight_dist": 84, "_continuous_distn": 84, "norm_gen": 84, "contemporan": 84, "instantan": 84, "simulate_data_from_var": 84, "var_model": 84, "never": 84, "worri": 84, "about": [84, 90], "situat": 84, "instantaen": 84, "x_df": 85, "dataset": [85, 89, 95], "right": [85, 88], "fid": 86, "show_path": 86, "debug": 86, "help": 86, "triag": 86, "bug": 86, "sy": 86, "stdout": 86, "develop": [86, 90, 102, 103], "submit": 86, "platform": 86, "linux": 86, "15": 86, "1067": 86, "aw": 86, "x86_64": 86, "glibc2": 86, "feb": 86, "37": 86, "gcc": 86, "usr": 86, "bin": 86, "cpu": 86, "36": 86, "core": [86, 99], "68": [86, 102], "gb": 86, "openbla": 86, "17": [86, 102], "thread": 86, "sklearn": 86, "backend": 86, "macosx": 86, "Not": 86, "version": [86, 89, 90, 93, 100], "info": 86, "joblib": [86, 89], "squar": 87, "rankdir": 87, "plaintext": 87, "dot": 87, "languag": 87, "center": 88, "aspect_ratio": 88, "3333333333333333": 88, "left": 88, "top": [88, 90], "bottom": 88, "factor": [88, 95], "plot": 88, "width": 88, "height": 88, "lai": 88, "histor": 88, "hope": 89, "tacit": 89, "convent": 89, "contributor": [89, 90], "aim": 89, "redund": 89, "begin": 89, "didn": 89, "elsewher": 89, "1d": 89, "whose": 89, "often": 89, "public": [89, 90], "formal": 89, "maintain": [89, 90, 94], "backward": 89, "compat": 89, "privat": 89, "assur": 89, "stabl": [89, 90], "__call__": 89, "embed": 89, "etc": [89, 90], "__doc__": 89, "pep257": 89, "numpydoc": 89, "give": [89, 95, 98], "basic": [89, 90], "doctest": 89, "directori": 89, "exemplifi": 89, "referenc": 89, "sometim": 89, "built": 89, "alongsid": 89, "descript": [89, 90], "tool": [89, 90], "usabl": 89, "subject": 89, "futur": [89, 95], "polici": 89, "letter": 89, "readthedoc": 89, "facilit": 89, "parallel": 89, "effici": [89, 100, 101, 102, 103], "delai": 89, "n_featur": 89, "n_sampl": 89, "shorthand": 89, "distinctli": 89, "noun": 89, "langl": 89, "rangl": 89, "off": [89, 93], "symmetric_difference_map": 89, "composit": 90, "encourag": 90, "pull": 90, "contribut": [90, 94, 102, 103], "exhaust": 90, "earli": 90, "best": 90, "goal": 90, "converg": 90, "releas": 90, "trait": 90, "major": [90, 93, 100, 101, 102, 103], "alpha": [90, 99], "drastic": 90, "robust": 90, "commun": [90, 94], "curv": 90, "transit": 90, "lie": 90, "hand": 90, "summar": 90, "implicitli": [90, 95], "focus": 90, "design": 90, "lightweight": 90, "sole": 90, "instal": 90, "histori": 90, "yourself": 90, "interest": 90, "solv": 90, "improv": [90, 102, 103], "overal": 90, "hesit": 90, "reach": 90, "who": [90, 102, 103], "codebas": 90, "close": 91, "pypi": 91, "poetri": [91, 103], "recommend": 91, "repositori": 91, "git": 91, "cd": 91, "heavili": 93, "reli": 93, "cover": 93, "concept": [93, 98, 99], "glossari": [93, 99], "ye": 93, "augmentedpag": 93, "stationarytimeseriesgraph": 93, "stationarytimeseriesmixededgegraph": [93, 102], "stationarytimeseriescpdag": 93, "sure": 93, "past": 93, "moment": 93, "embodi": 93, "stationar": 93, "propag": 93, "set_stationar": 93, "modif": 93, "subtl": 93, "impact": 93, "mec": 93, "timeseriesmixededgegraph": 93, "light": 94, "quit": 94, "de": 94, "facto": 94, "offer": 94, "interpret": 94, "triangular": 94, "fill": 94, "against": [94, 95], "plan": 95, "yet": 95, "drop": 95, "roadmap": 95, "simultan": 95, "gaussin": 95, "child": 95, "affect": 95, "_parent": 95, "leftarrow": 95, "observed_par": 95, "arbitrarili": 95, "simul": [95, 99], "determinist": 95, "stochast": 95, "inher": 95, "natur": 95, "univari": 95, "presum": 95, "parent_1": 95, "parent_2": 95, "treatment": 95, "intervention_funct": 95, "domain_parent_funct": 95, "domain_exogenous_distribut": 95, "smallest": 95, "again": 95, "respect": 95, "unalter": 95, "But": 95, "mathbb": 95, "sample_from_graph": 95, "instanti": 95, "dure": 95, "intricaci": 95, "apriori": 95, "pa_x": 95, "noisi": 95, "hyperparamet": 95, "overridden": 95, "nest": 95, "citat": 95, "FOR": 95, "sel": 95, "ones": 95, "extra": 95, "invariant_domain": 95, "domain_gaussian_noise_funct": 95, "faith": 96, "532": 97, "everyth": 98, "multidomain": [99, 102], "semi_directed_path": 99, "all_semi_directed_path": 99, "is_semi_directed_path": 99, "export": [99, 102], "java": 99, "enhanc": [100, 101, 102, 103], "tip": 100, "subscrib": 100, "notifi": 100, "aryan": [102, 103], "roi": [102, 103], "71": 102, "minimal_m_separ": 102, "bf": 102, "jaron": 102, "lee": 102, "53": 102, "balltre": 102, "48": 102, "46": 102, "uncovered_pd_path": 102, "42": 102, "adam": [102, 103], "li": [102, 103], "possible_ancestor": 102, "possible_descend": 102, "discriminating_path": 102, "pds_path": 102, "acyclif": 102, "julien": 102, "siebert": 102, "26": 102, "29": 102, "49": 102, "causallearn": 102, "51": 102, "60": 102, "anank": 102, "63": 102, "commit": 102, "hook": 102, "75": 102, "make_graph_multidomain": 102, "77": 102, "78": 102, "82": 102, "thank": [102, 103], "everyon": [102, 103], "mainten": [102, 103], "incept": [102, 103], "91": 103, "96": 103, "93": 103, "99": 103, "suit": 103, "101": 103, "pdag_to_cpdag": 103, "pdag_to_dag": 103, "dag_to_cpdag": 103, "102": 103, "setup": 103, "110": 103, "proper": 103, "112": 103}, "objects": {"": [[0, 0, 0, "-", "pywhy_graphs"]], "pywhy_graphs": [[15, 1, 1, "", "ADMG"], [16, 1, 1, "", "AugmentedGraph"], [17, 1, 1, "", "AugmentedPAG"], [18, 1, 1, "", "CPDAG"], [19, 1, 1, "", "PAG"], [92, 0, 0, "-", "algorithms"], [93, 0, 0, "-", "classes"], [94, 0, 0, "-", "export"], [95, 0, 0, "-", "functional"], [96, 0, 0, "-", "simulate"], [86, 4, 1, "", "sys_info"]], "pywhy_graphs.ADMG": [[15, 2, 1, "", "bidirected_edge_name"], [15, 2, 1, "", "bidirected_edges"], [15, 3, 1, "", "c_components"], [15, 2, 1, "", "directed_edge_name"], [15, 2, 1, "", "directed_edges"], [15, 3, 1, "", "sub_bidirected_graph"], [15, 3, 1, "", "sub_directed_graph"], [15, 3, 1, "", "sub_undirected_graph"], [15, 2, 1, "", "undirected_edge_name"], [15, 2, 1, "", "undirected_edges"]], "pywhy_graphs.CPDAG": [[18, 3, 1, "", "add_edge"], [18, 3, 1, "", "add_edges_from"], [18, 2, 1, "", "directed_edge_name"], [18, 2, 1, "", "directed_edges"], [18, 3, 1, "", "orient_uncertain_edge"], [18, 3, 1, "", "possible_children"], [18, 3, 1, "", "possible_parents"], [18, 3, 1, "", "sub_directed_graph"], [18, 3, 1, "", "sub_undirected_graph"], [18, 2, 1, "", "undirected_edge_name"], [18, 2, 1, "", "undirected_edges"]], "pywhy_graphs.PAG": [[19, 3, 1, "", "add_edge"], [19, 3, 1, "", "add_edges_from"], [19, 3, 1, "", "children"], [19, 2, 1, "", "circle_edge_name"], [19, 2, 1, "", "circle_edges"], [19, 3, 1, "", "orient_uncertain_edge"], [19, 3, 1, "", "parents"], [19, 3, 1, "", "possible_children"], [19, 3, 1, "", "possible_parents"], [19, 3, 1, "", "sub_circle_graph"]], "pywhy_graphs.algorithms": [[20, 4, 1, "", "acyclification"], [21, 4, 1, "", "add_all_snode_combinations"], [22, 4, 1, "", "all_semi_directed_paths"], [23, 4, 1, "", "check_pag_definition"], [24, 4, 1, "", "compute_invariant_domains_per_node"], [25, 4, 1, "", "dag_to_cpdag"], [26, 4, 1, "", "dag_to_mag"], [27, 4, 1, "", "discriminating_path"], [28, 4, 1, "", "find_connected_pairs"], [29, 4, 1, "", "has_adc"], [30, 4, 1, "", "inducing_path"], [31, 4, 1, "", "is_definite_noncollider"], [32, 4, 1, "", "is_semi_directed_path"], [33, 4, 1, "", "is_valid_mec_graph"], [34, 4, 1, "", "label_edges"], [35, 4, 1, "", "mag_to_pag"], [36, 4, 1, "", "order_edges"], [37, 4, 1, "", "pag_to_mag"], [38, 4, 1, "", "pdag_to_cpdag"], [39, 4, 1, "", "pdag_to_dag"], [40, 4, 1, "", "pds"], [41, 4, 1, "", "pds_path"], [42, 4, 1, "", "pds_t"], [43, 4, 1, "", "pds_t_path"], [44, 4, 1, "", "possible_ancestors"], [45, 4, 1, "", "possible_descendants"], [92, 0, 0, "-", "semi_directed_paths"], [48, 4, 1, "", "uncovered_pd_path"], [49, 4, 1, "", "valid_mag"], [50, 4, 1, "", "valid_pag"]], "pywhy_graphs.algorithms.semi_directed_paths": [[46, 4, 1, "", "all_semi_directed_paths"], [47, 4, 1, "", "is_semi_directed_path"]], "pywhy_graphs.classes": [[93, 0, 0, "-", "timeseries"]], "pywhy_graphs.classes.timeseries": [[51, 1, 1, "", "StationaryTimeSeriesCPDAG"], [52, 1, 1, "", "StationaryTimeSeriesDiGraph"], [53, 1, 1, "", "StationaryTimeSeriesGraph"], [54, 1, 1, "", "StationaryTimeSeriesMixedEdgeGraph"], [55, 1, 1, "", "StationaryTimeSeriesPAG"], [56, 1, 1, "", "TimeSeriesDiGraph"], [57, 1, 1, "", "TimeSeriesGraph"], [58, 1, 1, "", "TimeSeriesMixedEdgeGraph"], [59, 4, 1, "", "complete_ts_graph"], [60, 4, 1, "", "empty_ts_graph"], [61, 4, 1, "", "get_summary_graph"], [62, 4, 1, "", "has_homologous_edges"], [63, 4, 1, "", "nodes_in_time_order"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG": [[51, 3, 1, "", "add_edge"], [51, 3, 1, "", "add_edges_from"], [51, 2, 1, "", "directed_edge_name"], [51, 2, 1, "", "directed_edges"], [51, 3, 1, "", "orient_uncertain_edge"], [51, 3, 1, "", "possible_children"], [51, 3, 1, "", "possible_parents"], [51, 3, 1, "", "sub_directed_graph"], [51, 3, 1, "", "sub_undirected_graph"], [51, 2, 1, "", "undirected_edge_name"], [51, 2, 1, "", "undirected_edges"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG": [[55, 2, 1, "", "bidirected_edge_name"], [55, 2, 1, "", "bidirected_edges"], [55, 2, 1, "", "circle_edge_name"], [55, 2, 1, "", "circle_edges"], [55, 2, 1, "", "directed_edge_name"], [55, 2, 1, "", "directed_edges"], [55, 3, 1, "", "orient_uncertain_edge"], [55, 3, 1, "", "possible_children"], [55, 3, 1, "", "possible_parents"], [55, 3, 1, "", "sub_bidirected_graph"], [55, 3, 1, "", "sub_circle_graph"], [55, 3, 1, "", "sub_directed_graph"], [55, 3, 1, "", "sub_undirected_graph"], [55, 2, 1, "", "undirected_edge_name"], [55, 2, 1, "", "undirected_edges"]], "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph": [[58, 3, 1, "", "add_edge"], [58, 3, 1, "", "add_edges_from"], [58, 3, 1, "", "add_homologous_edges"], [58, 3, 1, "", "copy"], [58, 5, 1, "", "node_attr_dict_factory"], [58, 5, 1, "", "node_dict_factory"], [58, 3, 1, "", "remove_edge"], [58, 3, 1, "", "remove_edges_from"], [58, 3, 1, "", "remove_homologous_edges"]], "pywhy_graphs.export": [[64, 4, 1, "", "clearn_to_graph"], [65, 4, 1, "", "graph_to_clearn"], [66, 4, 1, "", "graph_to_numpy"], [67, 4, 1, "", "graph_to_pcalg"], [68, 4, 1, "", "graph_to_tetrad"], [69, 4, 1, "", "numpy_to_graph"], [70, 4, 1, "", "pcalg_to_graph"], [71, 4, 1, "", "tetrad_to_graph"]], "pywhy_graphs.functional": [[72, 4, 1, "", "apply_linear_soft_intervention"], [75, 4, 1, "", "make_graph_linear_gaussian"], [76, 4, 1, "", "make_graph_multidomain"], [77, 4, 1, "", "set_node_attributes_with_G"]], "pywhy_graphs.functional.discrete": [[73, 4, 1, "", "add_cpd_for_node"], [74, 4, 1, "", "make_random_discrete_graph"]], "pywhy_graphs.networkx": [[78, 1, 1, "", "MixedEdgeGraph"], [79, 4, 1, "", "bidirected_to_unobserved_confounder"], [80, 4, 1, "", "is_minimal_m_separator"], [81, 4, 1, "", "m_separated"], [82, 4, 1, "", "minimal_m_separator"]], "pywhy_graphs.networkx.MixedEdgeGraph": [[78, 3, 1, "", "__contains__"], [78, 3, 1, "", "__getitem__"], [78, 3, 1, "", "__iter__"], [78, 3, 1, "", "__len__"], [78, 3, 1, "", "add_edge"], [78, 3, 1, "", "add_edges_from"], [78, 2, 1, "", "adj"], [78, 3, 1, "", "clear_edge_types"], [78, 3, 1, "", "copy"], [78, 3, 1, "", "degree"], [78, 3, 1, "", "edges"], [78, 3, 1, "", "get_edge_data"], [78, 3, 1, "", "get_graphs"], [78, 5, 1, "", "graph_attr_dict_factory"], [78, 3, 1, "", "has_edge"], [78, 3, 1, "", "has_node"], [78, 3, 1, "", "is_directed"], [78, 3, 1, "", "is_multigraph"], [78, 2, 1, "", "name"], [78, 3, 1, "", "nbunch_iter"], [78, 5, 1, "", "node_attr_dict_factory"], [78, 5, 1, "", "node_dict_factory"], [78, 3, 1, "", "number_of_edge_types"], [78, 3, 1, "", "number_of_edges"], [78, 3, 1, "", "number_of_nodes"], [78, 3, 1, "", "order"], [78, 3, 1, "", "remove_edge"], [78, 3, 1, "", "remove_edges_from"], [78, 3, 1, "", "size"], [78, 3, 1, "", "subgraph"], [78, 3, 1, "", "to_directed"], [78, 3, 1, "", "to_undirected"], [78, 3, 1, "", "update"]], "pywhy_graphs.simulate": [[83, 4, 1, "", "simulate_data_from_var"], [84, 4, 1, "", "simulate_linear_var_process"], [85, 4, 1, "", "simulate_var_process_from_summary_graph"]], "pywhy_graphs.viz": [[87, 4, 1, "", "draw"], [88, 4, 1, "", "timeseries_layout"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:property", "3": "py:method", "4": "py:function", "5": "py:attribute"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "property", "Python property"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"], "5": ["py", "attribute", "Python attribute"]}, "titleterms": {"api": [0, 89, 90], "pywhy_graph": [0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 93, 96], "class": [0, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 92, 93], "causal": [0, 1, 3, 5, 12, 92, 93, 94, 95, 96, 98], "graph": [0, 1, 2, 3, 4, 5, 8, 11, 12, 13, 90, 92, 93, 94, 95, 98], "algorithm": [0, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 92], "mix": [0, 5, 8], "edg": [0, 8], "deal": 0, "cpdag": [0, 5, 18], "convers": 0, "between": [0, 4], "other": 0, "packag": [0, 94], "": [0, 95, 102, 103], "networkx": [0, 1, 7, 78, 79, 80, 81, 82, 90, 98], "experiment": [0, 94], "function": [0, 72, 73, 74, 75, 76, 77, 95], "timeseri": [0, 13, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 93], "simul": [0, 5, 83, 84, 85, 96], "graphic": [0, 95, 96], "model": [0, 5, 95, 96], "convert": 0, "visual": [0, 1, 11, 12, 98], "util": 0, "debug": 0, "exampl": [1, 4, 7, 15, 18, 19, 56, 78, 81, 87, 88, 98], "galleri": [1, 98], "mixededgegraph": [1, 7, 8, 78, 98], "introduct": [1, 3, 4, 5, 98], "On": 2, "pag": [2, 5, 19], "valid": 2, "pywhi": [2, 90, 92, 93, 94, 98], "refer": [2, 4, 5], "an": [4, 5], "induc": 4, "path": [4, 92], "how": [4, 5, 90, 98], "find": 4, "them": [4, 5], "construct": [4, 8], "adjac": 4, "node": [4, 8, 95], "trivial": 4, "have": 4, "non": 4, "The": 4, "role": 4, "collid": 4, "us": [5, 15, 18, 19, 56, 78, 81, 87, 88, 93, 98], "structur": 5, "some": 5, "data": 5, "direct": [5, 92], "ayclic": 5, "dag": 5, "also": 5, "known": 5, "bayesian": 5, "network": 5, "acycl": [5, 92], "admg": [5, 15], "complet": 5, "partial": 5, "ancestr": 5, "comput": [6, 9, 10, 14, 97], "time": [6, 9, 10, 14, 92, 93, 97], "differ": 8, "type": [8, 93], "properti": 8, "oper": 8, "kei": 8, "draw": [11, 13, 87], "set": [11, 13], "layout": [11, 13], "comparison": 11, "augmentedgraph": 16, "augmentedpag": 17, "acyclif": 20, "add_all_snode_combin": 21, "all_semi_directed_path": [22, 46], "check_pag_definit": 23, "compute_invariant_domains_per_nod": 24, "dag_to_cpdag": 25, "dag_to_mag": 26, "discriminating_path": 27, "find_connected_pair": 28, "has_adc": 29, "inducing_path": 30, "is_definite_noncollid": 31, "is_semi_directed_path": [32, 47], "is_valid_mec_graph": 33, "label_edg": 34, "mag_to_pag": 35, "order_edg": 36, "pag_to_mag": 37, "pdag_to_cpdag": 38, "pdag_to_dag": 39, "pd": 40, "pds_path": 41, "pds_t": 42, "pds_t_path": 43, "possible_ancestor": 44, "possible_descend": 45, "semi_directed_path": [46, 47], "uncovered_pd_path": 48, "valid_mag": 49, "valid_pag": 50, "stationarytimeseriescpdag": 51, "stationarytimeseriesdigraph": 52, "stationarytimeseriesgraph": 53, "stationarytimeseriesmixededgegraph": 54, "stationarytimeseriespag": 55, "timeseriesdigraph": 56, "timeseriesgraph": 57, "timeseriesmixededgegraph": 58, "complete_ts_graph": 59, "empty_ts_graph": 60, "get_summary_graph": 61, "has_homologous_edg": 62, "nodes_in_time_ord": 63, "export": [64, 65, 66, 67, 68, 69, 70, 71, 94], "clearn_to_graph": 64, "graph_to_clearn": 65, "graph_to_numpi": 66, "graph_to_pcalg": 67, "graph_to_tetrad": 68, "numpy_to_graph": 69, "pcalg_to_graph": 70, "tetrad_to_graph": 71, "apply_linear_soft_intervent": 72, "discret": [73, 74, 95], "add_cpd_for_nod": 73, "make_random_discrete_graph": 74, "make_graph_linear_gaussian": 75, "make_graph_multidomain": 76, "set_node_attributes_with_g": 77, "bidirected_to_unobserved_confound": 79, "is_minimal_m_separ": 80, "m_separ": 81, "minimal_m_separ": 82, "simulate_data_from_var": 83, "simulate_linear_var_process": 84, "simulate_var_process_from_summary_graph": 85, "sys_info": 86, "viz": [87, 88], "timeseries_layout": 88, "glossari": 89, "common": 89, "term": 89, "element": 89, "gener": 89, "concept": 89, "stabil": 90, "do": 90, "we": 90, "compar": 90, "content": 90, "get": 90, "start": 90, "team": 90, "indic": 90, "tabl": 90, "instal": 91, "pip": 91, "from": [91, 94, 95], "sourc": 91, "core": 92, "markov": 92, "equival": 92, "seri": [92, 93], "handl": 92, "semi": 92, "possibli": 92, "which": 93, "should": 93, "i": 93, "alpha": 93, "import": 94, "anoth": 94, "learn": 94, "numpi": 94, "graphviz": 94, "dagitti": 94, "pcalg": 94, "r": 94, "tetrad": 94, "java": 94, "repres": 95, "relationship": 95, "multipl": 95, "distribut": 95, "intervent": 95, "domain": 95, "shift": 95, "sampl": 95, "limit": 95, "specif": 95, "linear": 95, "multidomain": 95, "select": 95, "diagram": 95, "modul": 96, "tutori": 98, "user": 99, "guid": 99, "releas": 100, "histori": 100, "what": [102, 103], "new": [102, 103], "version": [102, 103], "0": [102, 103], "1": 102, "changelog": [102, 103], "code": [102, 103], "document": [102, 103], "contributor": [102, 103], "2": 103}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "nbsphinx": 4, "sphinxcontrib.bibtex": 9, "sphinx": 60}, "alltitles": {"API": [[0, "api"]], "pywhy_graphs.classes: Causal graph classes": [[0, "pywhy-graphs-classes-causal-graph-classes"]], "pywhy_graphs.algorithms: Algorithms for Mixed-Edge Graphs": [[0, "pywhy-graphs-algorithms-algorithms-for-mixed-edge-graphs"]], "pywhy_graphs.algorithms: Algorithms for dealing with CPDAGs": [[0, "pywhy-graphs-algorithms-algorithms-for-dealing-with-cpdags"]], "Conversions between other package\u2019s causal graphs": [[0, "conversions-between-other-package-s-causal-graphs"]], "NetworkX Experimental Functionality": [[0, "networkx-experimental-functionality"]], "pywhy_graphs.classes.timeseries: Timeseries": [[0, "pywhy-graphs-classes-timeseries-timeseries"]], "pywhy_graphs.simulate: Causal graphical model simulations": [[0, "pywhy-graphs-simulate-causal-graphical-model-simulations"], [96, "pywhy-graphs-simulate-causal-graphical-model-simulations"]], "Converting graphs to functional models": [[0, "converting-graphs-to-functional-models"]], "Visualization of causal graphs": [[0, "visualization-of-causal-graphs"], [1, "visualization-of-causal-graphs"], [12, "visualization-of-causal-graphs"], [98, "visualization-of-causal-graphs"]], "Utilities for debugging": [[0, "utilities-for-debugging"]], "Simulation": [[0, "simulation"]], "Examples Gallery": [[1, "examples-gallery"], [98, "examples-gallery"]], "Networkx MixedEdgeGraph Examples": [[1, "networkx-mixededgegraph-examples"], [7, "networkx-mixededgegraph-examples"], [98, "networkx-mixededgegraph-examples"]], "Introduction to causal graphs": [[1, "introduction-to-causal-graphs"], [3, "introduction-to-causal-graphs"], [98, "introduction-to-causal-graphs"]], "On PAGs and their validity": [[2, "on-pags-and-their-validity"]], "PAGs in pywhy-graphs": [[2, "pags-in-pywhy-graphs"]], "Validity of a PAG": [[2, "validity-of-a-pag"]], "References": [[2, "references"], [4, "references"], [5, "references"]], "An introduction to Inducing Paths and how to find them": [[4, "an-introduction-to-inducing-paths-and-how-to-find-them"]], "Construct an example graph": [[4, "construct-an-example-graph"]], "Adjacent nodes trivially have an inducing path": [[4, "adjacent-nodes-trivially-have-an-inducing-path"]], "Inducing paths between non-adjacent nodes": [[4, "inducing-paths-between-non-adjacent-nodes"]], "The role of colliders": [[4, "the-role-of-colliders"]], "An introduction to causal graphs and how to use them": [[5, "an-introduction-to-causal-graphs-and-how-to-use-them"]], "Structural Causal Models: Simulating some data": [[5, "structural-causal-models-simulating-some-data"]], "Causal Directed Ayclic Graphs (DAG): Also known as Causal Bayesian Networks": [[5, "causal-directed-ayclic-graphs-dag-also-known-as-causal-bayesian-networks"]], "Acyclic Directed Mixed Graphs (ADMG)": [[5, "acyclic-directed-mixed-graphs-admg"]], "Completed Partially Directed Ayclic Graph (CPDAG)": [[5, "completed-partially-directed-ayclic-graph-cpdag"]], "Partial Ancestral Graph (PAG)": [[5, "partial-ancestral-graph-pag"]], "Computation times": [[6, "computation-times"], [9, "computation-times"], [10, "computation-times"], [14, "computation-times"], [97, "computation-times"]], "MixedEdgeGraph - Graph with different types of edges": [[8, "mixededgegraph-graph-with-different-types-of-edges"]], "Construct a MixedEdgeGraph": [[8, "construct-a-mixededgegraph"]], "Mixed Edge Graph Properties": [[8, "mixed-edge-graph-properties"]], "Mixed Edge Graph Operations on Nodes": [[8, "mixed-edge-graph-operations-on-nodes"]], "Mixed Edge Graph Operations on Edges": [[8, "mixed-edge-graph-operations-on-edges"]], "Mixed Edge Graph Key Differences": [[8, "mixed-edge-graph-key-differences"]], "Drawing graphs and setting their layout for visual comparison": [[11, "drawing-graphs-and-setting-their-layout-for-visual-comparison"]], "Drawing timeseries graphs and setting their layout": [[13, "drawing-timeseries-graphs-and-setting-their-layout"]], "pywhy_graphs.ADMG": [[15, "pywhy-graphs-admg"]], "Examples using pywhy_graphs.ADMG": [[15, "examples-using-pywhy-graphs-admg"]], "pywhy_graphs.AugmentedGraph": [[16, "pywhy-graphs-augmentedgraph"]], "pywhy_graphs.AugmentedPAG": [[17, "pywhy-graphs-augmentedpag"]], "pywhy_graphs.CPDAG": [[18, "pywhy-graphs-cpdag"]], "Examples using pywhy_graphs.CPDAG": [[18, "examples-using-pywhy-graphs-cpdag"]], "pywhy_graphs.PAG": [[19, "pywhy-graphs-pag"]], "Examples using pywhy_graphs.PAG": [[19, "examples-using-pywhy-graphs-pag"]], "pywhy_graphs.algorithms.acyclification": [[20, "pywhy-graphs-algorithms-acyclification"]], "pywhy_graphs.algorithms.add_all_snode_combinations": [[21, "pywhy-graphs-algorithms-add-all-snode-combinations"]], "pywhy_graphs.algorithms.all_semi_directed_paths": [[22, "pywhy-graphs-algorithms-all-semi-directed-paths"]], "pywhy_graphs.algorithms.check_pag_definition": [[23, "pywhy-graphs-algorithms-check-pag-definition"]], "pywhy_graphs.algorithms.compute_invariant_domains_per_node": [[24, "pywhy-graphs-algorithms-compute-invariant-domains-per-node"]], "pywhy_graphs.algorithms.dag_to_cpdag": [[25, "pywhy-graphs-algorithms-dag-to-cpdag"]], "pywhy_graphs.algorithms.dag_to_mag": [[26, "pywhy-graphs-algorithms-dag-to-mag"]], "pywhy_graphs.algorithms.discriminating_path": [[27, "pywhy-graphs-algorithms-discriminating-path"]], "pywhy_graphs.algorithms.find_connected_pairs": [[28, "pywhy-graphs-algorithms-find-connected-pairs"]], "pywhy_graphs.algorithms.has_adc": [[29, "pywhy-graphs-algorithms-has-adc"]], "pywhy_graphs.algorithms.inducing_path": [[30, "pywhy-graphs-algorithms-inducing-path"]], "pywhy_graphs.algorithms.is_definite_noncollider": [[31, "pywhy-graphs-algorithms-is-definite-noncollider"]], "pywhy_graphs.algorithms.is_semi_directed_path": [[32, "pywhy-graphs-algorithms-is-semi-directed-path"]], "pywhy_graphs.algorithms.is_valid_mec_graph": [[33, "pywhy-graphs-algorithms-is-valid-mec-graph"]], "pywhy_graphs.algorithms.label_edges": [[34, "pywhy-graphs-algorithms-label-edges"]], "pywhy_graphs.algorithms.mag_to_pag": [[35, "pywhy-graphs-algorithms-mag-to-pag"]], "pywhy_graphs.algorithms.order_edges": [[36, "pywhy-graphs-algorithms-order-edges"]], "pywhy_graphs.algorithms.pag_to_mag": [[37, "pywhy-graphs-algorithms-pag-to-mag"]], "pywhy_graphs.algorithms.pdag_to_cpdag": [[38, "pywhy-graphs-algorithms-pdag-to-cpdag"]], "pywhy_graphs.algorithms.pdag_to_dag": [[39, "pywhy-graphs-algorithms-pdag-to-dag"]], "pywhy_graphs.algorithms.pds": [[40, "pywhy-graphs-algorithms-pds"]], "pywhy_graphs.algorithms.pds_path": [[41, "pywhy-graphs-algorithms-pds-path"]], "pywhy_graphs.algorithms.pds_t": [[42, "pywhy-graphs-algorithms-pds-t"]], "pywhy_graphs.algorithms.pds_t_path": [[43, "pywhy-graphs-algorithms-pds-t-path"]], "pywhy_graphs.algorithms.possible_ancestors": [[44, "pywhy-graphs-algorithms-possible-ancestors"]], "pywhy_graphs.algorithms.possible_descendants": [[45, "pywhy-graphs-algorithms-possible-descendants"]], "pywhy_graphs.algorithms.semi_directed_paths.all_semi_directed_paths": [[46, "pywhy-graphs-algorithms-semi-directed-paths-all-semi-directed-paths"]], "pywhy_graphs.algorithms.semi_directed_paths.is_semi_directed_path": [[47, "pywhy-graphs-algorithms-semi-directed-paths-is-semi-directed-path"]], "pywhy_graphs.algorithms.uncovered_pd_path": [[48, "pywhy-graphs-algorithms-uncovered-pd-path"]], "pywhy_graphs.algorithms.valid_mag": [[49, "pywhy-graphs-algorithms-valid-mag"]], "pywhy_graphs.algorithms.valid_pag": [[50, "pywhy-graphs-algorithms-valid-pag"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG": [[51, "pywhy-graphs-classes-timeseries-stationarytimeseriescpdag"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesDiGraph": [[52, "pywhy-graphs-classes-timeseries-stationarytimeseriesdigraph"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesGraph": [[53, "pywhy-graphs-classes-timeseries-stationarytimeseriesgraph"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesMixedEdgeGraph": [[54, "pywhy-graphs-classes-timeseries-stationarytimeseriesmixededgegraph"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG": [[55, "pywhy-graphs-classes-timeseries-stationarytimeseriespag"]], "pywhy_graphs.classes.timeseries.TimeSeriesDiGraph": [[56, "pywhy-graphs-classes-timeseries-timeseriesdigraph"]], "Examples using pywhy_graphs.classes.timeseries.TimeSeriesDiGraph": [[56, "examples-using-pywhy-graphs-classes-timeseries-timeseriesdigraph"]], "pywhy_graphs.classes.timeseries.TimeSeriesGraph": [[57, "pywhy-graphs-classes-timeseries-timeseriesgraph"]], "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph": [[58, "pywhy-graphs-classes-timeseries-timeseriesmixededgegraph"]], "pywhy_graphs.classes.timeseries.complete_ts_graph": [[59, "pywhy-graphs-classes-timeseries-complete-ts-graph"]], "pywhy_graphs.classes.timeseries.empty_ts_graph": [[60, "pywhy-graphs-classes-timeseries-empty-ts-graph"]], "pywhy_graphs.classes.timeseries.get_summary_graph": [[61, "pywhy-graphs-classes-timeseries-get-summary-graph"]], "pywhy_graphs.classes.timeseries.has_homologous_edges": [[62, "pywhy-graphs-classes-timeseries-has-homologous-edges"]], "pywhy_graphs.classes.timeseries.nodes_in_time_order": [[63, "pywhy-graphs-classes-timeseries-nodes-in-time-order"]], "pywhy_graphs.export.clearn_to_graph": [[64, "pywhy-graphs-export-clearn-to-graph"]], "pywhy_graphs.export.graph_to_clearn": [[65, "pywhy-graphs-export-graph-to-clearn"]], "pywhy_graphs.export.graph_to_numpy": [[66, "pywhy-graphs-export-graph-to-numpy"]], "pywhy_graphs.export.graph_to_pcalg": [[67, "pywhy-graphs-export-graph-to-pcalg"]], "pywhy_graphs.export.graph_to_tetrad": [[68, "pywhy-graphs-export-graph-to-tetrad"]], "pywhy_graphs.export.numpy_to_graph": [[69, "pywhy-graphs-export-numpy-to-graph"]], "pywhy_graphs.export.pcalg_to_graph": [[70, "pywhy-graphs-export-pcalg-to-graph"]], "pywhy_graphs.export.tetrad_to_graph": [[71, "pywhy-graphs-export-tetrad-to-graph"]], "pywhy_graphs.functional.apply_linear_soft_intervention": [[72, "pywhy-graphs-functional-apply-linear-soft-intervention"]], "pywhy_graphs.functional.discrete.add_cpd_for_node": [[73, "pywhy-graphs-functional-discrete-add-cpd-for-node"]], "pywhy_graphs.functional.discrete.make_random_discrete_graph": [[74, "pywhy-graphs-functional-discrete-make-random-discrete-graph"]], "pywhy_graphs.functional.make_graph_linear_gaussian": [[75, "pywhy-graphs-functional-make-graph-linear-gaussian"]], "pywhy_graphs.functional.make_graph_multidomain": [[76, "pywhy-graphs-functional-make-graph-multidomain"]], "pywhy_graphs.functional.set_node_attributes_with_G": [[77, "pywhy-graphs-functional-set-node-attributes-with-g"]], "pywhy_graphs.networkx.MixedEdgeGraph": [[78, "pywhy-graphs-networkx-mixededgegraph"]], "Examples using pywhy_graphs.networkx.MixedEdgeGraph": [[78, "examples-using-pywhy-graphs-networkx-mixededgegraph"]], "pywhy_graphs.networkx.bidirected_to_unobserved_confounder": [[79, "pywhy-graphs-networkx-bidirected-to-unobserved-confounder"]], "pywhy_graphs.networkx.is_minimal_m_separator": [[80, "pywhy-graphs-networkx-is-minimal-m-separator"]], "pywhy_graphs.networkx.m_separated": [[81, "pywhy-graphs-networkx-m-separated"]], "Examples using pywhy_graphs.networkx.m_separated": [[81, "examples-using-pywhy-graphs-networkx-m-separated"]], "pywhy_graphs.networkx.minimal_m_separator": [[82, "pywhy-graphs-networkx-minimal-m-separator"]], "pywhy_graphs.simulate.simulate_data_from_var": [[83, "pywhy-graphs-simulate-simulate-data-from-var"]], "pywhy_graphs.simulate.simulate_linear_var_process": [[84, "pywhy-graphs-simulate-simulate-linear-var-process"]], "pywhy_graphs.simulate.simulate_var_process_from_summary_graph": [[85, "pywhy-graphs-simulate-simulate-var-process-from-summary-graph"]], "pywhy_graphs.sys_info": [[86, "pywhy-graphs-sys-info"]], "pywhy_graphs.viz.draw": [[87, "pywhy-graphs-viz-draw"]], "Examples using pywhy_graphs.viz.draw": [[87, "examples-using-pywhy-graphs-viz-draw"]], "pywhy_graphs.viz.timeseries_layout": [[88, "pywhy-graphs-viz-timeseries-layout"]], "Examples using pywhy_graphs.viz.timeseries_layout": [[88, "examples-using-pywhy-graphs-viz-timeseries-layout"]], "Glossary of Common Terms and API Elements": [[89, "glossary-of-common-terms-and-api-elements"]], "General Concepts": [[89, "general-concepts"]], "pywhy-graphs": [[90, "pywhy-graphs"]], "API Stability": [[90, "api-stability"]], "How do we compare with NetworkX?": [[90, "how-do-we-compare-with-networkx"]], "Contents": [[90, "contents"]], "Getting started:": [[90, null]], "Team": [[90, "team"]], "Indices and tables": [[90, "indices-and-tables"]], "Installation": [[91, "installation"]], "Installing with pip": [[91, "installing-with-pip"]], "Installing from source": [[91, "installing-from-source"]], "Causal Graph Algorithms in PyWhy": [[92, "module-pywhy_graphs.algorithms"]], "Core Algorithms": [[92, "core-algorithms"]], "Algorithms for Markov Equivalence Classes": [[92, "algorithms-for-markov-equivalence-classes"]], "Algorithms for Time-Series Graphs": [[92, "algorithms-for-time-series-graphs"]], "Algorithms for handling acyclicity": [[92, "algorithms-for-handling-acyclicity"]], "Semi-directed (possibly-directed) Paths": [[92, "module-pywhy_graphs.algorithms.semi_directed_paths"]], "Causal Graphs in PyWhy": [[93, "module-pywhy_graphs.classes"]], "Which graph class should I use?": [[93, "which-graph-class-should-i-use"]], "pywhy_graphs.classes: Causal graph types": [[93, "pywhy-graphs-classes-causal-graph-types"]], "pywhy_graphs.classes.timeseries: Causal graph types for time-series (alpha)": [[93, "module-pywhy_graphs.classes.timeseries"]], "Importing causal graphs to PyWhy-Graphs, or exporting PyWhy-Graphs to another package": [[94, "module-pywhy_graphs.export"]], "Causal-Learn": [[94, "causal-learn"]], "Numpy (graphviz and dagitty)": [[94, "numpy-graphviz-and-dagitty"]], "PCAlg from R (Experimental)": [[94, "pcalg-from-r-experimental"]], "Tetrad from Java": [[94, "tetrad-from-java"]], "Functional Causal Graphical Models": [[95, "module-pywhy_graphs.functional"]], "Representing a node\u2019s functional relationships": [[95, "representing-a-node-s-functional-relationships"]], "Multiple Distributions: Interventions and Domain Shifts": [[95, "multiple-distributions-interventions-and-domain-shifts"]], "Sampling from the graph": [[95, "sampling-from-the-graph"]], "Limitations": [[95, "limitations"]], "Specific Functional Graphs": [[95, "specific-functional-graphs"]], "Discrete functional graphs": [[95, "discrete-functional-graphs"]], "Linear": [[95, "linear"], [95, "id4"]], "Linear functional graphs": [[95, "linear-functional-graphs"]], "Multidomain": [[95, "multidomain"]], "Linear functional selection diagrams": [[95, "linear-functional-selection-diagrams"]], "Simulation module": [[96, "simulation-module"]], "How to use pywhy-graphs with examples and tutorials": [[98, "how-to-use-pywhy-graphs-with-examples-and-tutorials"]], "User Guide": [[99, "user-guide"]], "Release History": [[100, "release-history"]], "What\u2019s new?": [[102, "what-s-new"], [103, "what-s-new"]], "Version 0.1": [[102, "version-0-1"]], "Changelog": [[102, "changelog"], [103, "changelog"]], "Code and Documentation Contributors": [[102, "code-and-documentation-contributors"], [103, "code-and-documentation-contributors"]], "Version 0.2": [[103, "version-0-2"]]}, "indexentries": {"module": [[0, "module-pywhy_graphs"], [92, "module-pywhy_graphs.algorithms"], [92, "module-pywhy_graphs.algorithms.semi_directed_paths"], [93, "module-pywhy_graphs.classes"], [93, "module-pywhy_graphs.classes.timeseries"], [94, "module-pywhy_graphs.export"], [95, "module-pywhy_graphs.functional"], [96, "module-pywhy_graphs.simulate"]], "pywhy_graphs": [[0, "module-pywhy_graphs"]], "admg (class in pywhy_graphs)": [[15, "pywhy_graphs.ADMG"]], "bidirected_edge_name (pywhy_graphs.admg property)": [[15, "pywhy_graphs.ADMG.bidirected_edge_name"]], "bidirected_edges (pywhy_graphs.admg property)": [[15, "pywhy_graphs.ADMG.bidirected_edges"]], "c_components() (pywhy_graphs.admg method)": [[15, "pywhy_graphs.ADMG.c_components"]], "directed_edge_name (pywhy_graphs.admg property)": [[15, "pywhy_graphs.ADMG.directed_edge_name"]], "directed_edges (pywhy_graphs.admg property)": [[15, "pywhy_graphs.ADMG.directed_edges"]], "sub_bidirected_graph() (pywhy_graphs.admg method)": [[15, "pywhy_graphs.ADMG.sub_bidirected_graph"]], "sub_directed_graph() (pywhy_graphs.admg method)": [[15, "pywhy_graphs.ADMG.sub_directed_graph"]], "sub_undirected_graph() (pywhy_graphs.admg method)": [[15, "pywhy_graphs.ADMG.sub_undirected_graph"]], "undirected_edge_name (pywhy_graphs.admg property)": [[15, "pywhy_graphs.ADMG.undirected_edge_name"]], "undirected_edges (pywhy_graphs.admg property)": [[15, "pywhy_graphs.ADMG.undirected_edges"]], "augmentedgraph (class in pywhy_graphs)": [[16, "pywhy_graphs.AugmentedGraph"]], "augmentedpag (class in pywhy_graphs)": [[17, "pywhy_graphs.AugmentedPAG"]], "cpdag (class in pywhy_graphs)": [[18, "pywhy_graphs.CPDAG"]], "add_edge() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.add_edge"]], "add_edges_from() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.add_edges_from"]], "directed_edge_name (pywhy_graphs.cpdag property)": [[18, "pywhy_graphs.CPDAG.directed_edge_name"]], "directed_edges (pywhy_graphs.cpdag property)": [[18, "pywhy_graphs.CPDAG.directed_edges"]], "orient_uncertain_edge() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.orient_uncertain_edge"]], "possible_children() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.possible_children"]], "possible_parents() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.possible_parents"]], "sub_directed_graph() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.sub_directed_graph"]], "sub_undirected_graph() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.sub_undirected_graph"]], "undirected_edge_name (pywhy_graphs.cpdag property)": [[18, "pywhy_graphs.CPDAG.undirected_edge_name"]], "undirected_edges (pywhy_graphs.cpdag property)": [[18, "pywhy_graphs.CPDAG.undirected_edges"]], "pag (class in pywhy_graphs)": [[19, "pywhy_graphs.PAG"]], "add_edge() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.add_edge"]], "add_edges_from() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.add_edges_from"]], "children() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.children"]], "circle_edge_name (pywhy_graphs.pag property)": [[19, "pywhy_graphs.PAG.circle_edge_name"]], "circle_edges (pywhy_graphs.pag property)": [[19, "pywhy_graphs.PAG.circle_edges"]], "orient_uncertain_edge() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.orient_uncertain_edge"]], "parents() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.parents"]], "possible_children() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.possible_children"]], "possible_parents() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.possible_parents"]], "sub_circle_graph() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.sub_circle_graph"]], "acyclification() (in module pywhy_graphs.algorithms)": [[20, "pywhy_graphs.algorithms.acyclification"]], "add_all_snode_combinations() (in module pywhy_graphs.algorithms)": [[21, "pywhy_graphs.algorithms.add_all_snode_combinations"]], "all_semi_directed_paths() (in module pywhy_graphs.algorithms)": [[22, "pywhy_graphs.algorithms.all_semi_directed_paths"]], "check_pag_definition() (in module pywhy_graphs.algorithms)": [[23, "pywhy_graphs.algorithms.check_pag_definition"]], "compute_invariant_domains_per_node() (in module pywhy_graphs.algorithms)": [[24, "pywhy_graphs.algorithms.compute_invariant_domains_per_node"]], "dag_to_cpdag() (in module pywhy_graphs.algorithms)": [[25, "pywhy_graphs.algorithms.dag_to_cpdag"]], "dag_to_mag() (in module pywhy_graphs.algorithms)": [[26, "pywhy_graphs.algorithms.dag_to_mag"]], "discriminating_path() (in module pywhy_graphs.algorithms)": [[27, "pywhy_graphs.algorithms.discriminating_path"]], "find_connected_pairs() (in module pywhy_graphs.algorithms)": [[28, "pywhy_graphs.algorithms.find_connected_pairs"]], "has_adc() (in module pywhy_graphs.algorithms)": [[29, "pywhy_graphs.algorithms.has_adc"]], "inducing_path() (in module pywhy_graphs.algorithms)": [[30, "pywhy_graphs.algorithms.inducing_path"]], "is_definite_noncollider() (in module pywhy_graphs.algorithms)": [[31, "pywhy_graphs.algorithms.is_definite_noncollider"]], "is_semi_directed_path() (in module pywhy_graphs.algorithms)": [[32, "pywhy_graphs.algorithms.is_semi_directed_path"]], "is_valid_mec_graph() (in module pywhy_graphs.algorithms)": [[33, "pywhy_graphs.algorithms.is_valid_mec_graph"]], "label_edges() (in module pywhy_graphs.algorithms)": [[34, "pywhy_graphs.algorithms.label_edges"]], "mag_to_pag() (in module pywhy_graphs.algorithms)": [[35, "pywhy_graphs.algorithms.mag_to_pag"]], "order_edges() (in module pywhy_graphs.algorithms)": [[36, "pywhy_graphs.algorithms.order_edges"]], "pag_to_mag() (in module pywhy_graphs.algorithms)": [[37, "pywhy_graphs.algorithms.pag_to_mag"]], "pdag_to_cpdag() (in module pywhy_graphs.algorithms)": [[38, "pywhy_graphs.algorithms.pdag_to_cpdag"]], "pdag_to_dag() (in module pywhy_graphs.algorithms)": [[39, "pywhy_graphs.algorithms.pdag_to_dag"]], "pds() (in module pywhy_graphs.algorithms)": [[40, "pywhy_graphs.algorithms.pds"]], "pds_path() (in module pywhy_graphs.algorithms)": [[41, "pywhy_graphs.algorithms.pds_path"]], "pds_t() (in module pywhy_graphs.algorithms)": [[42, "pywhy_graphs.algorithms.pds_t"]], "pds_t_path() (in module pywhy_graphs.algorithms)": [[43, "pywhy_graphs.algorithms.pds_t_path"]], "possible_ancestors() (in module pywhy_graphs.algorithms)": [[44, "pywhy_graphs.algorithms.possible_ancestors"]], "possible_descendants() (in module pywhy_graphs.algorithms)": [[45, "pywhy_graphs.algorithms.possible_descendants"]], "all_semi_directed_paths() (in module pywhy_graphs.algorithms.semi_directed_paths)": [[46, "pywhy_graphs.algorithms.semi_directed_paths.all_semi_directed_paths"]], "is_semi_directed_path() (in module pywhy_graphs.algorithms.semi_directed_paths)": [[47, "pywhy_graphs.algorithms.semi_directed_paths.is_semi_directed_path"]], "uncovered_pd_path() (in module pywhy_graphs.algorithms)": [[48, "pywhy_graphs.algorithms.uncovered_pd_path"]], "valid_mag() (in module pywhy_graphs.algorithms)": [[49, "pywhy_graphs.algorithms.valid_mag"]], "valid_pag() (in module pywhy_graphs.algorithms)": [[50, "pywhy_graphs.algorithms.valid_pag"]], "stationarytimeseriescpdag (class in pywhy_graphs.classes.timeseries)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG"]], "add_edge() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.add_edge"]], "add_edges_from() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.add_edges_from"]], "directed_edge_name (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag property)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.directed_edge_name"]], "directed_edges (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag property)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.directed_edges"]], "orient_uncertain_edge() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.orient_uncertain_edge"]], "possible_children() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.possible_children"]], "possible_parents() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.possible_parents"]], "sub_directed_graph() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.sub_directed_graph"]], "sub_undirected_graph() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.sub_undirected_graph"]], "undirected_edge_name (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag property)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.undirected_edge_name"]], "undirected_edges (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag property)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.undirected_edges"]], "stationarytimeseriesdigraph (class in pywhy_graphs.classes.timeseries)": [[52, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesDiGraph"]], "stationarytimeseriesgraph (class in pywhy_graphs.classes.timeseries)": [[53, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesGraph"]], "stationarytimeseriesmixededgegraph (class in pywhy_graphs.classes.timeseries)": [[54, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesMixedEdgeGraph"]], "stationarytimeseriespag (class in pywhy_graphs.classes.timeseries)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG"]], "bidirected_edge_name (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.bidirected_edge_name"]], "bidirected_edges (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.bidirected_edges"]], "circle_edge_name (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.circle_edge_name"]], "circle_edges (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.circle_edges"]], "directed_edge_name (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.directed_edge_name"]], "directed_edges (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.directed_edges"]], "orient_uncertain_edge() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.orient_uncertain_edge"]], "possible_children() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.possible_children"]], "possible_parents() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.possible_parents"]], "sub_bidirected_graph() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.sub_bidirected_graph"]], "sub_circle_graph() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.sub_circle_graph"]], "sub_directed_graph() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.sub_directed_graph"]], "sub_undirected_graph() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.sub_undirected_graph"]], "undirected_edge_name (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.undirected_edge_name"]], "undirected_edges (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.undirected_edges"]], "timeseriesdigraph (class in pywhy_graphs.classes.timeseries)": [[56, "pywhy_graphs.classes.timeseries.TimeSeriesDiGraph"]], "timeseriesgraph (class in pywhy_graphs.classes.timeseries)": [[57, "pywhy_graphs.classes.timeseries.TimeSeriesGraph"]], "timeseriesmixededgegraph (class in pywhy_graphs.classes.timeseries)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph"]], "add_edge() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.add_edge"]], "add_edges_from() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.add_edges_from"]], "add_homologous_edges() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.add_homologous_edges"]], "copy() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.copy"]], "node_attr_dict_factory (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph attribute)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.node_attr_dict_factory"]], "node_dict_factory (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph attribute)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.node_dict_factory"]], "remove_edge() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.remove_edge"]], "remove_edges_from() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.remove_edges_from"]], "remove_homologous_edges() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.remove_homologous_edges"]], "complete_ts_graph() (in module pywhy_graphs.classes.timeseries)": [[59, "pywhy_graphs.classes.timeseries.complete_ts_graph"]], "empty_ts_graph() (in module pywhy_graphs.classes.timeseries)": [[60, "pywhy_graphs.classes.timeseries.empty_ts_graph"]], "get_summary_graph() (in module pywhy_graphs.classes.timeseries)": [[61, "pywhy_graphs.classes.timeseries.get_summary_graph"]], "has_homologous_edges() (in module pywhy_graphs.classes.timeseries)": [[62, "pywhy_graphs.classes.timeseries.has_homologous_edges"]], "nodes_in_time_order() (in module pywhy_graphs.classes.timeseries)": [[63, "pywhy_graphs.classes.timeseries.nodes_in_time_order"]], "clearn_to_graph() (in module pywhy_graphs.export)": [[64, "pywhy_graphs.export.clearn_to_graph"]], "graph_to_clearn() (in module pywhy_graphs.export)": [[65, "pywhy_graphs.export.graph_to_clearn"]], "graph_to_numpy() (in module pywhy_graphs.export)": [[66, "pywhy_graphs.export.graph_to_numpy"]], "graph_to_pcalg() (in module pywhy_graphs.export)": [[67, "pywhy_graphs.export.graph_to_pcalg"]], "graph_to_tetrad() (in module pywhy_graphs.export)": [[68, "pywhy_graphs.export.graph_to_tetrad"]], "numpy_to_graph() (in module pywhy_graphs.export)": [[69, "pywhy_graphs.export.numpy_to_graph"]], "pcalg_to_graph() (in module pywhy_graphs.export)": [[70, "pywhy_graphs.export.pcalg_to_graph"]], "tetrad_to_graph() (in module pywhy_graphs.export)": [[71, "pywhy_graphs.export.tetrad_to_graph"]], "apply_linear_soft_intervention() (in module pywhy_graphs.functional)": [[72, "pywhy_graphs.functional.apply_linear_soft_intervention"]], "add_cpd_for_node() (in module pywhy_graphs.functional.discrete)": [[73, "pywhy_graphs.functional.discrete.add_cpd_for_node"]], "make_random_discrete_graph() (in module pywhy_graphs.functional.discrete)": [[74, "pywhy_graphs.functional.discrete.make_random_discrete_graph"]], "make_graph_linear_gaussian() (in module pywhy_graphs.functional)": [[75, "pywhy_graphs.functional.make_graph_linear_gaussian"]], "make_graph_multidomain() (in module pywhy_graphs.functional)": [[76, "pywhy_graphs.functional.make_graph_multidomain"]], "set_node_attributes_with_g() (in module pywhy_graphs.functional)": [[77, "pywhy_graphs.functional.set_node_attributes_with_G"]], "mixededgegraph (class in pywhy_graphs.networkx)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph"]], "__contains__() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.__contains__"]], "__getitem__() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.__getitem__"]], "__iter__() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.__iter__"]], "__len__() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.__len__"]], "add_edge() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.add_edge"]], "add_edges_from() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.add_edges_from"]], "adj (pywhy_graphs.networkx.mixededgegraph property)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.adj"]], "clear_edge_types() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.clear_edge_types"]], "copy() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.copy"]], "degree() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.degree"]], "edges() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.edges"]], "get_edge_data() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.get_edge_data"]], "get_graphs() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.get_graphs"]], "graph_attr_dict_factory (pywhy_graphs.networkx.mixededgegraph attribute)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.graph_attr_dict_factory"]], "has_edge() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.has_edge"]], "has_node() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.has_node"]], "is_directed() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.is_directed"]], "is_multigraph() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.is_multigraph"]], "name (pywhy_graphs.networkx.mixededgegraph property)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.name"]], "nbunch_iter() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.nbunch_iter"]], "node_attr_dict_factory (pywhy_graphs.networkx.mixededgegraph attribute)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.node_attr_dict_factory"]], "node_dict_factory (pywhy_graphs.networkx.mixededgegraph attribute)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.node_dict_factory"]], "number_of_edge_types() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.number_of_edge_types"]], "number_of_edges() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.number_of_edges"]], "number_of_nodes() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.number_of_nodes"]], "order() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.order"]], "remove_edge() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.remove_edge"]], "remove_edges_from() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.remove_edges_from"]], "size() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.size"]], "subgraph() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.subgraph"]], "to_directed() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.to_directed"]], "to_undirected() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.to_undirected"]], "update() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.update"]], "bidirected_to_unobserved_confounder() (in module pywhy_graphs.networkx)": [[79, "pywhy_graphs.networkx.bidirected_to_unobserved_confounder"]], "is_minimal_m_separator() (in module pywhy_graphs.networkx)": [[80, "pywhy_graphs.networkx.is_minimal_m_separator"]], "m_separated() (in module pywhy_graphs.networkx)": [[81, "pywhy_graphs.networkx.m_separated"]], "minimal_m_separator() (in module pywhy_graphs.networkx)": [[82, "pywhy_graphs.networkx.minimal_m_separator"]], "simulate_data_from_var() (in module pywhy_graphs.simulate)": [[83, "pywhy_graphs.simulate.simulate_data_from_var"]], "simulate_linear_var_process() (in module pywhy_graphs.simulate)": [[84, "pywhy_graphs.simulate.simulate_linear_var_process"]], "simulate_var_process_from_summary_graph() (in module pywhy_graphs.simulate)": [[85, "pywhy_graphs.simulate.simulate_var_process_from_summary_graph"]], "sys_info() (in module pywhy_graphs)": [[86, "pywhy_graphs.sys_info"]], "draw() (in module pywhy_graphs.viz)": [[87, "pywhy_graphs.viz.draw"]], "timeseries_layout() (in module pywhy_graphs.viz)": [[88, "pywhy_graphs.viz.timeseries_layout"]], "1d": [[89, "term-1d"]], "1d array": [[89, "term-1d-array"]], "2d": [[89, "term-2d"]], "2d array": [[89, "term-2d-array"]], "api": [[89, "term-API"]], "f-node": [[89, "term-F-node"]], "markov equivalence class": [[89, "term-Markov-equivalence-class"]], "scm": [[89, "term-SCM"]], "structural causal model": [[89, "term-Structural-Causal-Model"]], "c components": [[89, "term-0"]], "c-components": [[89, "term-c-components"]], "c_components": [[89, "term-c_components"]], "callable": [[89, "term-callable"]], "docstring": [[89, "term-docstring"]], "equivalence class": [[89, "term-equivalence-class"]], "examples": [[89, "term-examples"]], "experimental": [[89, "term-experimental"]], "gallery": [[89, "term-gallery"]], "joblib": [[89, "term-joblib"]], "lag": [[89, "term-lag"]], "n_features": [[89, "term-n_features"]], "n_samples": [[89, "term-n_samples"]], "node": [[89, "term-node"]], "np": [[89, "term-np"]], "nx": [[89, "term-nx"]], "pair": [[89, "term-pair"]], "pd": [[89, "term-pd"]], "sample": [[89, "term-sample"]], "samples": [[89, "term-samples"]], "sigma_map": [[89, "term-sigma_map"]], "symmetric_difference_map": [[89, "term-symmetric_difference_map"]], "tsnode": [[89, "term-tsnode"]], "variable": [[89, "term-variable"]], "pywhy_graphs.algorithms": [[92, "module-pywhy_graphs.algorithms"]], "pywhy_graphs.algorithms.semi_directed_paths": [[92, "module-pywhy_graphs.algorithms.semi_directed_paths"]], "pywhy_graphs.classes": [[93, "module-pywhy_graphs.classes"]], "pywhy_graphs.classes.timeseries": [[93, "module-pywhy_graphs.classes.timeseries"]], "pywhy_graphs.export": [[94, "module-pywhy_graphs.export"]], "pywhy_graphs.functional": [[95, "module-pywhy_graphs.functional"]], "pywhy_graphs.simulate": [[96, "module-pywhy_graphs.simulate"]]}})
\ No newline at end of file
+Search.setIndex({"docnames": ["api", "auto_examples/index", "auto_examples/intro/checking_validity_of_a_pag", "auto_examples/intro/index", "auto_examples/intro/inducing_path", "auto_examples/intro/intro_causal_graphs", "auto_examples/intro/sg_execution_times", "auto_examples/mixededge/index", "auto_examples/mixededge/plot_mixed_edge_graph", "auto_examples/mixededge/sg_execution_times", "auto_examples/sg_execution_times", "auto_examples/visualization/draw_and_compare_graphs_with_same_layout", "auto_examples/visualization/index", "auto_examples/visualization/plot_timeseries_graphs", "auto_examples/visualization/sg_execution_times", "generated/pywhy_graphs.ADMG", "generated/pywhy_graphs.AugmentedGraph", "generated/pywhy_graphs.AugmentedPAG", "generated/pywhy_graphs.CPDAG", "generated/pywhy_graphs.PAG", "generated/pywhy_graphs.algorithms.acyclification", "generated/pywhy_graphs.algorithms.add_all_snode_combinations", "generated/pywhy_graphs.algorithms.all_semi_directed_paths", "generated/pywhy_graphs.algorithms.check_pag_definition", "generated/pywhy_graphs.algorithms.compute_invariant_domains_per_node", "generated/pywhy_graphs.algorithms.dag_to_cpdag", "generated/pywhy_graphs.algorithms.dag_to_mag", "generated/pywhy_graphs.algorithms.discriminating_path", "generated/pywhy_graphs.algorithms.find_connected_pairs", "generated/pywhy_graphs.algorithms.has_adc", "generated/pywhy_graphs.algorithms.inducing_path", "generated/pywhy_graphs.algorithms.is_definite_noncollider", "generated/pywhy_graphs.algorithms.is_semi_directed_path", "generated/pywhy_graphs.algorithms.is_valid_mec_graph", "generated/pywhy_graphs.algorithms.label_edges", "generated/pywhy_graphs.algorithms.mag_to_pag", "generated/pywhy_graphs.algorithms.order_edges", "generated/pywhy_graphs.algorithms.pag_to_mag", "generated/pywhy_graphs.algorithms.pdag_to_cpdag", "generated/pywhy_graphs.algorithms.pdag_to_dag", "generated/pywhy_graphs.algorithms.pds", "generated/pywhy_graphs.algorithms.pds_path", "generated/pywhy_graphs.algorithms.pds_t", "generated/pywhy_graphs.algorithms.pds_t_path", "generated/pywhy_graphs.algorithms.possible_ancestors", "generated/pywhy_graphs.algorithms.possible_descendants", "generated/pywhy_graphs.algorithms.semi_directed_paths.all_semi_directed_paths", "generated/pywhy_graphs.algorithms.semi_directed_paths.is_semi_directed_path", "generated/pywhy_graphs.algorithms.uncovered_pd_path", "generated/pywhy_graphs.algorithms.valid_mag", "generated/pywhy_graphs.algorithms.valid_pag", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesDiGraph", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesGraph", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesMixedEdgeGraph", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG", "generated/pywhy_graphs.classes.timeseries.TimeSeriesDiGraph", "generated/pywhy_graphs.classes.timeseries.TimeSeriesGraph", "generated/pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph", "generated/pywhy_graphs.classes.timeseries.complete_ts_graph", "generated/pywhy_graphs.classes.timeseries.empty_ts_graph", "generated/pywhy_graphs.classes.timeseries.get_summary_graph", "generated/pywhy_graphs.classes.timeseries.has_homologous_edges", "generated/pywhy_graphs.classes.timeseries.nodes_in_time_order", "generated/pywhy_graphs.export.clearn_to_graph", "generated/pywhy_graphs.export.graph_to_clearn", "generated/pywhy_graphs.export.graph_to_numpy", "generated/pywhy_graphs.export.graph_to_pcalg", "generated/pywhy_graphs.export.graph_to_tetrad", "generated/pywhy_graphs.export.numpy_to_graph", "generated/pywhy_graphs.export.pcalg_to_graph", "generated/pywhy_graphs.export.tetrad_to_graph", "generated/pywhy_graphs.functional.apply_linear_soft_intervention", "generated/pywhy_graphs.functional.discrete.add_cpd_for_node", "generated/pywhy_graphs.functional.discrete.make_random_discrete_graph", "generated/pywhy_graphs.functional.make_graph_linear_gaussian", "generated/pywhy_graphs.functional.make_graph_multidomain", "generated/pywhy_graphs.functional.set_node_attributes_with_G", "generated/pywhy_graphs.networkx.MixedEdgeGraph", "generated/pywhy_graphs.networkx.bidirected_to_unobserved_confounder", "generated/pywhy_graphs.networkx.is_minimal_m_separator", "generated/pywhy_graphs.networkx.m_separated", "generated/pywhy_graphs.networkx.minimal_m_separator", "generated/pywhy_graphs.simulate.simulate_data_from_var", "generated/pywhy_graphs.simulate.simulate_linear_var_process", "generated/pywhy_graphs.simulate.simulate_var_process_from_summary_graph", "generated/pywhy_graphs.sys_info", "generated/pywhy_graphs.viz.draw", "generated/pywhy_graphs.viz.timeseries_layout", "glossary", "index", "installation", "reference/algorithms/index", "reference/classes/index", "reference/export/index", "reference/functional/index", "reference/simulation/index", "sg_execution_times", "use", "user_guide", "whats_new", "whats_new/_contributors", "whats_new/v0.1", "whats_new/v0.2"], "filenames": ["api.rst", "auto_examples/index.rst", "auto_examples/intro/checking_validity_of_a_pag.rst", "auto_examples/intro/index.rst", "auto_examples/intro/inducing_path.rst", "auto_examples/intro/intro_causal_graphs.rst", "auto_examples/intro/sg_execution_times.rst", "auto_examples/mixededge/index.rst", "auto_examples/mixededge/plot_mixed_edge_graph.rst", "auto_examples/mixededge/sg_execution_times.rst", "auto_examples/sg_execution_times.rst", "auto_examples/visualization/draw_and_compare_graphs_with_same_layout.rst", "auto_examples/visualization/index.rst", "auto_examples/visualization/plot_timeseries_graphs.rst", "auto_examples/visualization/sg_execution_times.rst", "generated/pywhy_graphs.ADMG.rst", "generated/pywhy_graphs.AugmentedGraph.rst", "generated/pywhy_graphs.AugmentedPAG.rst", "generated/pywhy_graphs.CPDAG.rst", "generated/pywhy_graphs.PAG.rst", "generated/pywhy_graphs.algorithms.acyclification.rst", "generated/pywhy_graphs.algorithms.add_all_snode_combinations.rst", "generated/pywhy_graphs.algorithms.all_semi_directed_paths.rst", "generated/pywhy_graphs.algorithms.check_pag_definition.rst", "generated/pywhy_graphs.algorithms.compute_invariant_domains_per_node.rst", "generated/pywhy_graphs.algorithms.dag_to_cpdag.rst", "generated/pywhy_graphs.algorithms.dag_to_mag.rst", "generated/pywhy_graphs.algorithms.discriminating_path.rst", "generated/pywhy_graphs.algorithms.find_connected_pairs.rst", "generated/pywhy_graphs.algorithms.has_adc.rst", "generated/pywhy_graphs.algorithms.inducing_path.rst", "generated/pywhy_graphs.algorithms.is_definite_noncollider.rst", "generated/pywhy_graphs.algorithms.is_semi_directed_path.rst", "generated/pywhy_graphs.algorithms.is_valid_mec_graph.rst", "generated/pywhy_graphs.algorithms.label_edges.rst", "generated/pywhy_graphs.algorithms.mag_to_pag.rst", "generated/pywhy_graphs.algorithms.order_edges.rst", "generated/pywhy_graphs.algorithms.pag_to_mag.rst", "generated/pywhy_graphs.algorithms.pdag_to_cpdag.rst", "generated/pywhy_graphs.algorithms.pdag_to_dag.rst", "generated/pywhy_graphs.algorithms.pds.rst", "generated/pywhy_graphs.algorithms.pds_path.rst", "generated/pywhy_graphs.algorithms.pds_t.rst", "generated/pywhy_graphs.algorithms.pds_t_path.rst", "generated/pywhy_graphs.algorithms.possible_ancestors.rst", "generated/pywhy_graphs.algorithms.possible_descendants.rst", "generated/pywhy_graphs.algorithms.semi_directed_paths.all_semi_directed_paths.rst", "generated/pywhy_graphs.algorithms.semi_directed_paths.is_semi_directed_path.rst", "generated/pywhy_graphs.algorithms.uncovered_pd_path.rst", "generated/pywhy_graphs.algorithms.valid_mag.rst", "generated/pywhy_graphs.algorithms.valid_pag.rst", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.rst", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesDiGraph.rst", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesGraph.rst", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesMixedEdgeGraph.rst", "generated/pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.rst", "generated/pywhy_graphs.classes.timeseries.TimeSeriesDiGraph.rst", "generated/pywhy_graphs.classes.timeseries.TimeSeriesGraph.rst", "generated/pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.rst", "generated/pywhy_graphs.classes.timeseries.complete_ts_graph.rst", "generated/pywhy_graphs.classes.timeseries.empty_ts_graph.rst", "generated/pywhy_graphs.classes.timeseries.get_summary_graph.rst", "generated/pywhy_graphs.classes.timeseries.has_homologous_edges.rst", "generated/pywhy_graphs.classes.timeseries.nodes_in_time_order.rst", "generated/pywhy_graphs.export.clearn_to_graph.rst", "generated/pywhy_graphs.export.graph_to_clearn.rst", "generated/pywhy_graphs.export.graph_to_numpy.rst", "generated/pywhy_graphs.export.graph_to_pcalg.rst", "generated/pywhy_graphs.export.graph_to_tetrad.rst", "generated/pywhy_graphs.export.numpy_to_graph.rst", "generated/pywhy_graphs.export.pcalg_to_graph.rst", "generated/pywhy_graphs.export.tetrad_to_graph.rst", "generated/pywhy_graphs.functional.apply_linear_soft_intervention.rst", "generated/pywhy_graphs.functional.discrete.add_cpd_for_node.rst", "generated/pywhy_graphs.functional.discrete.make_random_discrete_graph.rst", "generated/pywhy_graphs.functional.make_graph_linear_gaussian.rst", "generated/pywhy_graphs.functional.make_graph_multidomain.rst", "generated/pywhy_graphs.functional.set_node_attributes_with_G.rst", "generated/pywhy_graphs.networkx.MixedEdgeGraph.rst", "generated/pywhy_graphs.networkx.bidirected_to_unobserved_confounder.rst", "generated/pywhy_graphs.networkx.is_minimal_m_separator.rst", "generated/pywhy_graphs.networkx.m_separated.rst", "generated/pywhy_graphs.networkx.minimal_m_separator.rst", "generated/pywhy_graphs.simulate.simulate_data_from_var.rst", "generated/pywhy_graphs.simulate.simulate_linear_var_process.rst", "generated/pywhy_graphs.simulate.simulate_var_process_from_summary_graph.rst", "generated/pywhy_graphs.sys_info.rst", "generated/pywhy_graphs.viz.draw.rst", "generated/pywhy_graphs.viz.timeseries_layout.rst", "glossary.rst", "index.rst", "installation.md", "reference/algorithms/index.rst", "reference/classes/index.rst", "reference/export/index.rst", "reference/functional/index.rst", "reference/simulation/index.rst", "sg_execution_times.rst", "use.rst", "user_guide.rst", "whats_new.rst", "whats_new/_contributors.rst", "whats_new/v0.1.rst", "whats_new/v0.2.rst"], "titles": ["API", "Examples Gallery", "On PAGs and their validity", "Introduction to causal graphs", "An introduction to Inducing Paths and how to find them", "An introduction to causal graphs and how to use them", "Computation times", "Networkx MixedEdgeGraph Examples", "MixedEdgeGraph - Graph with different types of edges", "Computation times", "Computation times", "Drawing graphs and setting their layout for visual comparison", "Visualization of causal graphs", "Drawing timeseries graphs and setting their layout", "Computation times", "pywhy_graphs.ADMG", "pywhy_graphs.AugmentedGraph", "pywhy_graphs.AugmentedPAG", "pywhy_graphs.CPDAG", "pywhy_graphs.PAG", "<span class=\"section-number\">3.4.1. </span>pywhy_graphs.algorithms.acyclification", "pywhy_graphs.algorithms.add_all_snode_combinations", "pywhy_graphs.algorithms.all_semi_directed_paths", "<span class=\"section-number\">3.1.9. </span>pywhy_graphs.algorithms.check_pag_definition", "pywhy_graphs.algorithms.compute_invariant_domains_per_node", "pywhy_graphs.algorithms.dag_to_cpdag", "pywhy_graphs.algorithms.dag_to_mag", "<span class=\"section-number\">3.1.4. </span>pywhy_graphs.algorithms.discriminating_path", "pywhy_graphs.algorithms.find_connected_pairs", "pywhy_graphs.algorithms.has_adc", "pywhy_graphs.algorithms.inducing_path", "<span class=\"section-number\">3.1.5. </span>pywhy_graphs.algorithms.is_definite_noncollider", "pywhy_graphs.algorithms.is_semi_directed_path", "<span class=\"section-number\">3.1.1. </span>pywhy_graphs.algorithms.is_valid_mec_graph", "pywhy_graphs.algorithms.label_edges", "<span class=\"section-number\">3.1.7. </span>pywhy_graphs.algorithms.mag_to_pag", "pywhy_graphs.algorithms.order_edges", "<span class=\"section-number\">3.1.8. </span>pywhy_graphs.algorithms.pag_to_mag", "pywhy_graphs.algorithms.pdag_to_cpdag", "pywhy_graphs.algorithms.pdag_to_dag", "<span class=\"section-number\">3.2.1. </span>pywhy_graphs.algorithms.pds", "<span class=\"section-number\">3.2.2. </span>pywhy_graphs.algorithms.pds_path", "<span class=\"section-number\">3.3.1. </span>pywhy_graphs.algorithms.pds_t", "<span class=\"section-number\">3.3.2. </span>pywhy_graphs.algorithms.pds_t_path", "<span class=\"section-number\">3.1.2. </span>pywhy_graphs.algorithms.possible_ancestors", "<span class=\"section-number\">3.1.3. </span>pywhy_graphs.algorithms.possible_descendants", "<span class=\"section-number\">4.1. </span>pywhy_graphs.algorithms.semi_directed_paths.all_semi_directed_paths", "<span class=\"section-number\">4.2. </span>pywhy_graphs.algorithms.semi_directed_paths.is_semi_directed_path", "<span class=\"section-number\">3.2.3. </span>pywhy_graphs.algorithms.uncovered_pd_path", "pywhy_graphs.algorithms.valid_mag", "<span class=\"section-number\">3.1.6. </span>pywhy_graphs.algorithms.valid_pag", "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG", "pywhy_graphs.classes.timeseries.StationaryTimeSeriesDiGraph", "pywhy_graphs.classes.timeseries.StationaryTimeSeriesGraph", "pywhy_graphs.classes.timeseries.StationaryTimeSeriesMixedEdgeGraph", "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG", "pywhy_graphs.classes.timeseries.TimeSeriesDiGraph", "pywhy_graphs.classes.timeseries.TimeSeriesGraph", "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph", "pywhy_graphs.classes.timeseries.complete_ts_graph", "pywhy_graphs.classes.timeseries.empty_ts_graph", "pywhy_graphs.classes.timeseries.get_summary_graph", "pywhy_graphs.classes.timeseries.has_homologous_edges", "pywhy_graphs.classes.timeseries.nodes_in_time_order", "<span class=\"section-number\">6.1.2. </span>pywhy_graphs.export.clearn_to_graph", "<span class=\"section-number\">6.1.1. </span>pywhy_graphs.export.graph_to_clearn", "<span class=\"section-number\">6.2.1. </span>pywhy_graphs.export.graph_to_numpy", "<span class=\"section-number\">6.3.1. </span>pywhy_graphs.export.graph_to_pcalg", "<span class=\"section-number\">6.4.1. </span>pywhy_graphs.export.graph_to_tetrad", "<span class=\"section-number\">6.2.2. </span>pywhy_graphs.export.numpy_to_graph", "<span class=\"section-number\">6.3.2. </span>pywhy_graphs.export.pcalg_to_graph", "<span class=\"section-number\">6.4.2. </span>pywhy_graphs.export.tetrad_to_graph", "<span class=\"section-number\">2.5.2. </span>pywhy_graphs.functional.apply_linear_soft_intervention", "<span class=\"section-number\">2.2.1.2. </span>pywhy_graphs.functional.discrete.add_cpd_for_node", "<span class=\"section-number\">2.2.1.1. </span>pywhy_graphs.functional.discrete.make_random_discrete_graph", "<span class=\"section-number\">2.5.1. </span>pywhy_graphs.functional.make_graph_linear_gaussian", "<span class=\"section-number\">2.7.1. </span>pywhy_graphs.functional.make_graph_multidomain", "pywhy_graphs.functional.set_node_attributes_with_G", "pywhy_graphs.networkx.MixedEdgeGraph", "<span class=\"section-number\">3.1.10. </span>pywhy_graphs.networkx.bidirected_to_unobserved_confounder", "<span class=\"section-number\">3.1.12. </span>pywhy_graphs.networkx.is_minimal_m_separator", "<span class=\"section-number\">3.1.11. </span>pywhy_graphs.networkx.m_separated", "<span class=\"section-number\">3.1.13. </span>pywhy_graphs.networkx.minimal_m_separator", "<span class=\"section-number\">5.1.2. </span>pywhy_graphs.simulate.simulate_data_from_var", "<span class=\"section-number\">5.1.1. </span>pywhy_graphs.simulate.simulate_linear_var_process", "<span class=\"section-number\">5.1.3. </span>pywhy_graphs.simulate.simulate_var_process_from_summary_graph", "pywhy_graphs.sys_info", "pywhy_graphs.viz.draw", "pywhy_graphs.viz.timeseries_layout", "<span class=\"section-number\">7. </span>Glossary of Common Terms and API Elements", "<strong>pywhy-graphs</strong>", "Installation", "<span class=\"section-number\">3. </span>Causal Graph Algorithms in PyWhy", "<span class=\"section-number\">1. </span>Causal Graphs in PyWhy", "<span class=\"section-number\">6. </span>Importing causal graphs to PyWhy-Graphs, or exporting PyWhy-Graphs to another package", "<span class=\"section-number\">2. </span>Functional Causal Graphical Models", "<span class=\"section-number\">5. </span>Simulation module", "Computation times", "How to use pywhy-graphs with examples and tutorials", "User guide: contents", "Release History", "&lt;no title&gt;", "What\u2019s new?", "What\u2019s new?"], "terms": {"thi": [0, 1, 2, 4, 5, 7, 8, 11, 13, 17, 18, 19, 20, 22, 23, 24, 32, 33, 41, 42, 43, 46, 47, 48, 51, 53, 57, 58, 62, 66, 73, 74, 76, 78, 79, 80, 81, 82, 83, 85, 86, 89, 90, 93, 94, 95, 96, 98, 100], "i": [0, 1, 2, 4, 5, 7, 8, 11, 13, 15, 16, 17, 18, 19, 20, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 35, 36, 38, 40, 41, 42, 43, 46, 47, 48, 49, 50, 51, 52, 53, 55, 58, 62, 66, 67, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 88, 89, 90, 91, 94, 95, 96, 98, 99], "applic": 0, "program": 0, "interfac": [0, 89, 90, 94], "refer": [0, 16, 17, 20, 22, 30, 34, 36, 39, 40, 46, 48, 50, 70, 78, 80, 81, 82, 89, 90, 93, 95], "camelcas": 0, "name": [0, 8, 11, 15, 16, 17, 18, 19, 20, 51, 54, 55, 64, 69, 70, 78, 79, 80, 81, 82, 83, 87, 89, 93], "underscore_cas": 0, "pywhi": [0, 16, 17, 66, 67, 68, 71, 89, 91, 95, 99, 100, 102, 103], "group": 0, "themat": 0, "analysi": 0, "stage": [0, 76, 90], "These": [0, 5, 40, 89, 95, 103], "ar": [0, 2, 4, 5, 8, 11, 15, 16, 17, 18, 19, 22, 23, 24, 28, 30, 33, 34, 36, 40, 44, 45, 46, 48, 50, 51, 52, 55, 58, 61, 62, 64, 66, 67, 69, 70, 74, 75, 76, 78, 79, 80, 82, 83, 84, 89, 90, 92, 93, 95, 100, 103], "structur": [0, 15, 18, 19, 34, 36, 39, 51, 53, 56, 57, 58, 74, 76, 78, 89, 92, 93, 94, 95, 96], "scm": [0, 2, 5, 18, 19, 51, 89, 93], "variou": [0, 5, 11, 93, 102], "encount": [0, 94], "literatur": [0, 5], "tradit": [0, 5, 15, 93], "oper": [0, 20], "over": [0, 8, 18, 19, 42, 43, 51, 52, 55, 58, 73, 78, 81, 83, 90, 93, 95], "onli": [0, 4, 5, 8, 18, 19, 22, 32, 46, 47, 48, 49, 51, 55, 58, 66, 78, 81, 89, 93, 94, 95], "one": [0, 2, 4, 5, 8, 11, 16, 19, 21, 24, 27, 29, 32, 33, 47, 48, 52, 64, 66, 76, 78, 83, 84, 93, 94, 95], "type": [0, 1, 2, 7, 9, 15, 16, 17, 18, 19, 51, 54, 58, 59, 64, 67, 69, 70, 71, 72, 78, 84, 89, 90, 94, 95, 97, 98, 99], "equival": [0, 2, 4, 5, 17, 18, 19, 23, 34, 36, 39, 50, 51, 89, 93, 99], "gener": [0, 1, 2, 4, 5, 8, 11, 13, 15, 18, 19, 22, 46, 51, 73, 74, 76, 78, 83, 84, 87, 93, 95, 96, 98, 99, 102, 103], "consist": [0, 4, 34, 39, 42, 43, 52, 76, 83, 90, 93, 103], "more": [0, 2, 4, 5, 11, 16, 19, 32, 47, 76, 78, 84, 87, 89, 90, 93, 94], "than": [0, 19, 32, 42, 43, 47, 58, 76, 78, 93, 94], "common": [0, 2, 5, 66, 90, 92, 93, 99], "us": [0, 1, 2, 3, 6, 7, 8, 11, 13, 20, 22, 24, 35, 37, 46, 48, 51, 53, 57, 58, 74, 77, 86, 89, 90, 91, 94, 95, 96, 97, 99], "varieti": 0, "differ": [0, 1, 2, 5, 7, 9, 11, 13, 15, 16, 17, 18, 19, 51, 55, 78, 80, 82, 84, 89, 90, 93, 95, 97, 98], "With": 0, "markov": [0, 5, 17, 18, 19, 51, 89, 93, 99], "dag": [0, 4, 15, 18, 19, 23, 25, 26, 34, 36, 37, 39, 51, 55, 64, 69, 70, 71, 74, 75, 76, 79, 81, 84, 85, 90, 93, 94, 103], "markovian": [0, 5, 18, 19, 51, 93], "set": [0, 1, 2, 4, 5, 8, 12, 14, 15, 16, 17, 18, 19, 23, 24, 26, 27, 28, 30, 40, 41, 42, 43, 44, 45, 48, 49, 52, 53, 56, 66, 67, 72, 73, 75, 76, 77, 78, 80, 81, 82, 83, 84, 87, 88, 89, 93, 95, 97, 98], "we": [0, 2, 4, 5, 8, 11, 13, 19, 30, 48, 58, 66, 75, 76, 80, 83, 84, 89, 92, 93, 94, 95, 96, 98, 102, 103], "obtain": 0, "potenti": [0, 48], "direct": [0, 2, 4, 8, 15, 16, 17, 18, 19, 20, 22, 23, 25, 29, 32, 33, 34, 36, 38, 39, 40, 46, 47, 48, 49, 51, 52, 53, 55, 56, 58, 61, 66, 78, 79, 80, 81, 82, 87, 90, 93, 95, 99, 103], "acycl": [0, 4, 15, 18, 25, 34, 36, 38, 39, 40, 51, 84, 90, 93, 95, 99, 102], "pdag": [0, 38, 39, 103], "which": [0, 4, 5, 8, 13, 18, 19, 27, 32, 37, 40, 41, 42, 43, 47, 48, 50, 51, 52, 58, 64, 71, 73, 74, 75, 76, 78, 80, 81, 82, 85, 87, 88, 89, 90, 91, 92, 95, 96, 99], "mai": [0, 15, 18, 19, 22, 31, 46, 52, 76, 78, 80, 81, 82, 84, 89, 93, 95], "complet": [0, 2, 4, 18, 22, 30, 35, 38, 40, 46, 48, 50, 51, 53, 59, 78, 80, 81, 82, 83, 93], "want": [0, 2, 8, 19, 78, 93, 95], "extens": [0, 34, 39, 103], "e": [0, 2, 5, 8, 11, 13, 20, 22, 24, 32, 40, 46, 47, 48, 53, 70, 78, 81, 82, 84, 86, 88, 89, 90, 91, 93, 95], "some": [0, 4, 11, 13, 40, 78, 90, 93, 95, 98], "describ": [0, 2, 39, 89], "here": [0, 5, 8, 70, 78, 94, 95, 98, 102, 103], "Or": [0, 5], "perhap": 0, "its": [0, 8, 52, 73, 89, 93, 94, 95], "correspond": [0, 8, 15, 17, 18, 19, 58, 66, 78, 85, 89, 93, 95], "learn": [0, 4, 5, 17, 18, 19, 20, 34, 35, 36, 39, 40, 51, 64, 86, 90, 93, 95, 98, 99, 102], "implement": [0, 8, 39, 41, 42, 43, 78, 80, 81, 82, 89, 90, 93, 94, 102, 103], "infer": [0, 5, 17, 24, 40, 90, 95], "procedur": [0, 20], "encod": [0, 2, 5, 23, 64, 93, 95], "object": [0, 2, 5, 8, 11, 13, 18, 19, 51, 53, 58, 64, 78, 84, 89, 93], "submodul": [0, 90, 92, 95, 102], "those": [0, 2, 4, 30, 78, 84], "data": [0, 15, 16, 17, 18, 19, 51, 52, 53, 58, 75, 76, 78, 83, 84, 89, 92, 93, 94, 95, 96], "current": [0, 24, 41, 42, 43, 52, 90, 93, 94, 95], "doe": [0, 19, 22, 32, 33, 46, 47, 48, 78, 81, 90, 95], "support": [0, 52, 61, 66, 78, 90, 91, 93, 94, 95, 102, 103], "crucial": 0, "repres": [0, 2, 5, 8, 15, 16, 17, 18, 19, 23, 32, 47, 66, 67, 69, 70, 76, 78, 79, 80, 89, 90, 93, 94, 99], "latent": [0, 2, 4, 5, 15, 17, 18, 19, 30, 40, 48, 50, 51, 84, 89, 93, 95], "confound": [0, 2, 4, 5, 8, 15, 18, 19, 30, 48, 50, 51, 79, 84, 89, 93, 95], "select": [0, 2, 4, 5, 15, 19, 30, 40, 48, 50, 76, 93, 99], "bia": [0, 2, 4, 5, 15, 19, 30, 48, 50, 93], "The": [0, 2, 5, 8, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 33, 34, 35, 36, 37, 39, 40, 41, 42, 43, 44, 45, 46, 48, 49, 50, 51, 52, 53, 54, 55, 58, 59, 61, 62, 63, 64, 66, 67, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 93, 94, 95], "follow": [0, 19, 23, 40, 66, 69, 70, 78, 89, 91, 93, 94, 95], "intend": 0, "pr": 0, "eventu": [0, 78, 90], "thei": [0, 5, 8, 11, 16, 17, 18, 19, 51, 58, 66, 74, 76, 78, 90, 93, 94, 95], "includ": [0, 24, 52, 53, 78, 80, 82, 83, 84, 85, 86, 89, 93, 102, 103], "temporari": 0, "bridg": 0, "welcom": [0, 94], "feedback": 0, "specif": [0, 2, 8, 24, 66, 76, 77, 78, 80, 82, 88, 89, 90, 94, 99], "time": [0, 2, 4, 5, 8, 11, 13, 22, 42, 43, 46, 52, 53, 54, 56, 57, 58, 59, 61, 62, 63, 73, 83, 84, 85, 88, 89, 99, 102], "seri": [0, 5, 13, 52, 53, 54, 56, 57, 58, 59, 61, 62, 83, 84, 85, 88, 89, 99, 102], "also": [0, 36, 66, 74, 76, 78, 88, 89, 90, 92, 93, 95], "have": [0, 5, 8, 19, 21, 31, 33, 62, 66, 74, 75, 76, 78, 79, 81, 83, 90, 93, 94, 95], "like": [0, 2, 8, 19, 53, 66, 67, 69, 70, 78, 86, 90, 93, 94, 95], "stationari": [0, 51, 52, 53, 54, 55, 58, 62, 83, 84, 85, 93], "For": [0, 2, 4, 5, 8, 11, 13, 16, 17, 18, 19, 22, 23, 29, 34, 46, 51, 52, 55, 75, 76, 78, 83, 87, 89, 90, 93, 95], "explicitli": [0, 78, 95], "them": [0, 1, 3, 6, 15, 18, 19, 33, 78, 81, 87, 89, 97, 98], "assist": 0, "start": [0, 27, 32, 41, 42, 43, 44, 45, 47, 48, 63, 64, 70, 83, 85, 96], "from": [0, 2, 4, 5, 6, 9, 10, 11, 13, 14, 17, 18, 19, 22, 25, 27, 32, 35, 37, 40, 46, 47, 48, 50, 51, 55, 58, 59, 61, 62, 63, 66, 70, 71, 75, 76, 78, 80, 81, 82, 83, 84, 85, 87, 88, 89, 90, 93, 96, 97, 99, 102], "an": [0, 1, 2, 3, 6, 8, 11, 15, 16, 17, 18, 19, 20, 21, 23, 24, 29, 30, 33, 35, 40, 48, 50, 51, 52, 53, 55, 58, 59, 66, 69, 70, 73, 75, 76, 78, 80, 81, 82, 83, 84, 86, 87, 89, 90, 93, 94, 95, 96, 97, 98, 102, 103], "linear": [0, 72, 75, 76, 84, 99, 102], "equat": 0, "gaussian": [0, 72, 75, 76, 95], "sem": 0, "compar": [0, 5, 8, 11, 13, 19, 41, 42, 43, 78, 93], "becaus": [0, 4, 5, 8, 19, 32, 47, 66, 76, 80, 82, 90, 93, 94], "can": [0, 2, 4, 5, 8, 11, 13, 15, 18, 19, 21, 22, 24, 28, 46, 48, 51, 52, 58, 66, 78, 81, 83, 84, 86, 87, 90, 93, 94, 95], "wrap": [0, 81, 95], "graphviz": [0, 5, 11, 13, 87, 99], "pygraphviz": [0, 52, 86, 93], "perform": [0, 81], "modular": 0, "node": [0, 2, 5, 11, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 27, 30, 31, 32, 33, 36, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 55, 58, 62, 63, 64, 66, 69, 70, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 87, 88, 89, 90, 93, 94, 99, 102], "modul": [0, 78, 86, 89, 90, 99], "simpl": [1, 19, 89, 90, 93, 95, 98], "demonstr": [1, 7, 8, 11, 13, 98], "how": [1, 3, 6, 7, 8, 11, 13, 15, 18, 19, 21, 24, 66, 67, 78, 81, 87, 89, 93, 95, 97], "note": [1, 5, 7, 8, 11, 15, 16, 17, 18, 19, 20, 21, 22, 30, 32, 33, 40, 41, 42, 43, 46, 47, 48, 51, 52, 58, 62, 66, 67, 70, 71, 76, 78, 79, 81, 83, 84, 85, 88, 89, 93, 95, 98, 100], "wip": [1, 7, 98], "api": [1, 7, 8, 53, 78, 93, 95, 98, 99, 100, 101, 102, 103], "intent": [1, 7, 98], "ad": [1, 4, 5, 7, 8, 16, 17, 18, 19, 21, 51, 52, 58, 78, 79, 93, 95, 98, 102], "edg": [1, 2, 4, 5, 7, 9, 11, 15, 16, 17, 18, 19, 20, 21, 23, 27, 29, 32, 33, 34, 36, 37, 40, 41, 47, 48, 49, 51, 52, 53, 54, 55, 58, 62, 66, 67, 70, 75, 76, 78, 79, 80, 81, 82, 84, 87, 89, 90, 92, 93, 94, 95, 97, 98, 102, 103], "induc": [1, 2, 3, 5, 6, 15, 18, 23, 30, 49, 51, 74, 78, 87, 89, 93, 97, 98, 102], "path": [1, 2, 3, 5, 6, 15, 22, 23, 27, 30, 31, 32, 40, 41, 42, 43, 46, 47, 48, 49, 78, 80, 81, 86, 87, 89, 97, 98, 99, 102, 103], "find": [1, 3, 6, 15, 27, 28, 36, 40, 78, 82, 87, 90, 97, 98, 102, 103], "On": [1, 3, 4, 5, 6, 15, 19, 30, 48, 50, 78, 87, 97, 98], "pag": [1, 3, 6, 11, 13, 15, 16, 17, 23, 27, 31, 33, 35, 37, 40, 41, 44, 45, 48, 50, 53, 64, 67, 69, 70, 71, 78, 87, 90, 93, 97, 98, 102, 103], "valid": [1, 3, 4, 6, 15, 19, 23, 26, 33, 49, 50, 52, 74, 78, 82, 87, 93, 97, 98, 103], "draw": [1, 2, 4, 5, 12, 14, 15, 18, 19, 56, 78, 88, 97, 98, 102], "layout": [1, 12, 14, 15, 18, 19, 56, 78, 87, 88, 97, 98, 102], "comparison": [1, 12, 13, 14, 15, 18, 19, 78, 87, 97, 98], "timeseri": [1, 12, 14, 87, 88, 97, 98, 99, 102], "download": [1, 2, 4, 5, 8, 11, 13, 98], "all": [1, 2, 4, 5, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 30, 35, 36, 37, 40, 46, 48, 51, 52, 53, 58, 62, 73, 74, 75, 76, 78, 79, 80, 82, 89, 90, 93, 94, 95, 97, 98, 100, 103], "python": [1, 2, 4, 5, 8, 11, 13, 18, 19, 51, 58, 78, 86, 89, 90, 91, 98, 103], "sourc": [1, 2, 4, 5, 8, 11, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 90, 93, 98], "code": [1, 2, 4, 5, 8, 11, 13, 70, 89, 98], "auto_examples_python": [1, 98], "zip": [1, 2, 4, 5, 8, 11, 13, 98], "jupyt": [1, 2, 4, 5, 8, 11, 13, 98], "notebook": [1, 2, 4, 5, 8, 11, 13, 98], "auto_examples_jupyt": [1, 98], "sphinx": [1, 2, 4, 5, 8, 11, 13, 89, 98], "go": [2, 4, 5, 8, 11, 13, 102], "end": [2, 4, 5, 8, 11, 13, 22, 41, 42, 43, 46, 64, 66, 70], "full": [2, 4, 5, 8, 11, 13, 34, 78, 84, 95], "exampl": [2, 5, 6, 8, 9, 10, 11, 13, 14, 16, 17, 29, 51, 52, 55, 58, 66, 76, 83, 86, 89, 90, 93, 95, 97, 103], "A": [2, 4, 5, 8, 10, 11, 15, 18, 19, 20, 22, 23, 27, 29, 30, 31, 32, 33, 36, 38, 39, 46, 47, 48, 49, 51, 52, 54, 55, 56, 57, 58, 61, 73, 74, 78, 79, 81, 85, 88, 89, 93], "partial": [2, 18, 19, 20, 23, 38, 39, 51, 90, 93], "ancestr": [2, 19, 20, 23, 49, 80, 81, 82, 90, 93], "mix": [2, 4, 15, 19, 23, 32, 47, 49, 54, 58, 78, 80, 81, 82, 87, 90, 92, 93, 94, 102, 103], "singl": [2, 18, 19, 22, 46, 51, 54, 58, 78, 89, 90, 93, 95], "causal": [2, 4, 6, 8, 15, 16, 17, 18, 19, 20, 30, 48, 50, 51, 54, 55, 64, 66, 67, 68, 69, 70, 71, 72, 73, 76, 78, 79, 80, 81, 82, 84, 86, 87, 89, 90, 97, 99, 102], "relationship": [2, 5, 15, 18, 19, 51, 89, 93, 99], "between": [2, 5, 15, 18, 19, 22, 23, 27, 30, 33, 40, 43, 46, 48, 49, 51, 58, 64, 66, 75, 76, 78, 80, 81, 82, 89, 90, 93, 94, 95, 102, 103], "sever": 2, "defin": [2, 5, 8, 23, 26, 30, 35, 37, 40, 41, 42, 43, 48, 49, 52, 66, 67, 73, 74, 75, 78, 89, 93, 95], "class": [2, 4, 5, 8, 15, 16, 17, 18, 19, 23, 34, 36, 39, 66, 78, 89, 90, 99, 102], "mag": [2, 4, 26, 35, 37, 49, 50, 70, 103], "account": [2, 93], "possibl": [2, 5, 15, 19, 21, 24, 36, 44, 45, 73, 74, 76, 93, 95], "unobserv": [2, 5, 8, 18, 51, 79, 93], "underli": [2, 76, 83, 84, 93, 96], "anoth": [2, 19, 93, 99], "wai": [2, 8, 19, 78, 93, 94, 95], "understand": [2, 5], "condit": [2, 4, 5, 23, 30, 73, 74, 81, 83, 89, 95], "independ": [2, 5, 23, 78, 83, 84, 89], "constraint": [2, 5, 18, 19, 20, 51, 93], "stem": [2, 5, 93], "sinc": [2, 4, 5, 8, 66, 78, 95, 102, 103], "do": [2, 4, 5, 19, 33, 78, 89, 93, 95], "lead": 2, "uniqu": [2, 5, 52, 66, 93, 95], "essenc": 2, "same": [2, 5, 8, 11, 13, 15, 18, 19, 23, 24, 51, 58, 66, 78, 84, 89, 93, 95], "model": [2, 16, 17, 18, 19, 51, 53, 75, 76, 84, 89, 93, 99, 102], "displai": 2, "mark": [2, 90], "tail": [2, 5, 19, 48, 66, 70, 93, 94], "arrowhead": [2, 5, 18, 19, 48, 51, 55, 70, 93, 94], "share": [2, 78, 89], "member": [2, 4], "circl": [2, 5, 17, 19, 48, 55, 66, 70, 87, 93, 94, 102], "endpoint": [2, 4, 5, 17, 19, 27, 32, 43, 47, 48, 64, 66, 93, 94], "That": [2, 32, 47, 72, 78], "circular": [2, 17, 19, 40, 53, 93], "o": [2, 5, 19, 22, 31, 32, 37, 46, 47, 48, 66, 70, 81, 82, 93, 94], "both": [2, 17, 19, 48, 58, 78, 89, 93, 95], "within": [2, 48, 74, 78, 89, 90, 93, 95], "detail": [2, 4, 5, 17, 30, 34, 76, 89, 90], "found": [2, 4, 22, 27, 46, 48, 78, 80, 82, 86], "1": [2, 4, 5, 8, 9, 11, 13, 16, 17, 20, 22, 23, 26, 30, 34, 35, 36, 37, 39, 40, 41, 42, 43, 46, 48, 49, 50, 52, 53, 56, 57, 58, 66, 70, 73, 74, 75, 76, 78, 80, 81, 82, 83, 84, 85, 86, 88, 89, 90, 93, 94, 95, 100], "import": [2, 4, 5, 8, 11, 13, 86, 89, 90, 95, 99, 102], "pywhy_graph": [2, 4, 5, 8, 11, 13, 89, 90, 99, 102, 103], "viz": [2, 4, 5, 11, 13, 102], "try": [2, 76, 89], "dodiscov": [2, 5, 86], "fci": [2, 5, 19, 35, 48, 93], "make_context": 2, "ci": [2, 23], "oracl": 2, "util": [2, 5], "dummy_sampl": 2, "except": [2, 8, 21, 24, 58, 78], "importerror": 2, "rais": [2, 21, 24, 33, 58, 78, 94], "packag": [2, 66, 70, 90, 99], "requir": [2, 4, 11, 19, 34, 89, 93], "convert": [2, 8, 20, 25, 26, 35, 37, 38, 50, 64, 66, 67, 68, 69, 70, 71, 75, 76, 79, 83, 95, 102, 103], "construct": [2, 5, 24, 33, 35, 37, 69, 71, 76, 95], "easi": 2, "task": 2, "librari": [2, 78, 89, 100], "provid": [2, 8, 23, 35, 49, 50, 58, 78, 89, 90, 92, 93, 94, 95, 96], "separ": [2, 5, 19, 30, 40, 41, 42, 43, 52, 66, 80, 81, 82, 93, 102], "purpos": 2, "true": [2, 4, 5, 8, 11, 13, 20, 30, 32, 47, 51, 52, 53, 55, 58, 59, 62, 75, 76, 78, 80, 81, 86, 89, 93], "definit": [2, 4, 15, 18, 19, 31, 41, 48, 89, 93], "contain": [2, 4, 17, 18, 19, 29, 30, 32, 33, 41, 47, 51, 58, 62, 66, 78, 80, 81, 82, 89, 90, 95], "bidirect": [2, 4, 5, 8, 15, 16, 17, 18, 19, 20, 29, 51, 55, 66, 79, 80, 81, 82, 89, 90, 93, 95], "undirect": [2, 5, 11, 15, 16, 17, 18, 19, 51, 52, 55, 57, 61, 66, 78, 80, 81, 82, 93, 102], "cicl": 2, "To": [2, 4, 48, 62, 74, 76, 78, 83, 84, 90, 91, 95, 98], "illustr": [2, 4, 90], "figur": [2, 4, 39], "4": [2, 5, 36, 41, 80, 82, 86, 88, 89, 93, 95], "add_edg": [2, 4, 5, 8, 18, 19, 51, 58, 78, 90], "": [2, 4, 5, 17, 18, 19, 21, 22, 23, 24, 26, 30, 32, 37, 40, 46, 47, 49, 51, 52, 58, 70, 76, 78, 89, 90, 93, 99, 100], "directed_edge_nam": [2, 4, 15, 16, 17, 18, 19, 51, 55, 79, 80, 81, 82, 93], "g": [2, 4, 5, 8, 11, 13, 20, 21, 22, 23, 24, 25, 26, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 44, 45, 46, 47, 48, 49, 50, 58, 59, 61, 62, 63, 65, 68, 70, 71, 72, 73, 74, 75, 76, 78, 79, 80, 81, 82, 85, 87, 88, 90, 95], "l": [2, 4, 23, 26, 30, 49], "psh": 2, "circle_edge_nam": [2, 5, 17, 19, 55, 93], "final": [2, 4, 13, 78, 84, 93, 95], "look": [2, 5, 13, 90, 95, 98], "dot_graph": [2, 4, 5], "render": [2, 4, 5, 11, 13, 89], "outfil": [2, 4, 5, 11, 13], "valid_pag": 2, "png": [2, 4, 5, 11, 13], "view": [2, 4, 5, 11, 13, 58, 78, 95], "must": [2, 8, 18, 19, 43, 48, 51, 53, 58, 64, 74, 76, 78, 83, 87, 93, 95], "verifi": 2, "turn": [2, 37, 93], "check": [2, 22, 23, 27, 29, 30, 31, 33, 46, 48, 49, 50, 52, 62, 71, 78, 80, 81, 84, 93, 103], "theorem": [2, 37, 50], "2": [2, 4, 5, 8, 9, 13, 14, 17, 18, 19, 24, 34, 36, 37, 39, 40, 50, 51, 52, 58, 66, 70, 75, 76, 78, 83, 86, 89, 93, 94, 95, 97, 100], "method": [2, 5, 78, 89, 92, 93, 94], "simpli": [2, 18, 19, 51, 55, 84, 89, 95], "return": [2, 4, 5, 8, 15, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 55, 58, 59, 61, 62, 63, 64, 66, 67, 69, 70, 71, 72, 74, 75, 76, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 95], "print": [2, 4, 5, 8, 11, 13, 66, 86], "conditioningsetselect": 2, "pd": [2, 5, 41, 42, 43, 48, 89, 102], "context": [2, 5, 90, 95], "observed_vari": 2, "latent_vari": 2, "state_vari": 2, "init_graph": 2, "networkx": [2, 5, 8, 11, 13, 15, 16, 17, 18, 19, 22, 32, 46, 47, 51, 52, 54, 58, 59, 75, 76, 86, 89, 91, 93, 94, 95, 102], "0x7c948c635b50": 2, "included_edg": 2, "0x7c948c636250": 2, "excluded_edg": 2, "0x7c948c636690": 2, "num_distribut": 2, "obs_distribut": 2, "intervention_target": 2, "symmetric_diff_map": 2, "sigma_map": [2, 89], "f_node": [2, 17], "num_domain": 2, "domain_map": 2, "s_node": 2, "If": [2, 4, 5, 8, 17, 18, 19, 24, 31, 40, 48, 51, 52, 55, 58, 62, 73, 76, 78, 80, 82, 83, 86, 90, 93, 95], "test": [2, 4, 80, 94, 96, 102, 103], "whether": [2, 20, 23, 27, 29, 31, 32, 33, 47, 48, 49, 50, 52, 62, 73, 74, 78, 93], "algorithm": [2, 4, 5, 18, 19, 51, 80, 81, 82, 90, 93, 96, 99, 102, 103], "work": [2, 4, 53, 78, 80, 81, 89, 90, 93], "correctli": 2, "chang": [2, 48, 76, 78, 80, 82, 89, 90, 93, 95, 100, 101, 102, 103], "By": [2, 4, 8, 15, 16, 17, 18, 19, 27, 40, 48, 51, 53, 58, 73, 76, 78, 83, 85, 87, 89, 93], "remov": [2, 5, 8, 24, 58, 76, 78, 80, 82, 93, 103], "represent": [2, 8, 78, 81, 87, 90, 95], "multipl": [2, 15, 66, 78, 83, 93, 94], "In": [2, 4, 5, 11, 13, 19, 20, 48, 52, 62, 66, 76, 78, 83, 84, 90, 93, 95, 103], "case": [2, 11, 13, 19, 48, 62, 83, 93, 95], "sai": [2, 5], "directli": [2, 18, 19, 51, 53, 57, 58, 78, 93, 95], "caus": [2, 80], "howev": [2, 4, 5, 15, 48, 83, 84, 89, 90, 93, 95], "determin": [2, 50, 76], "logic": 2, "rule": [2, 4, 5, 19, 30, 37, 48, 50, 93], "One": [2, 5, 11, 13, 18, 51, 69, 70, 71, 89, 90, 93], "would": [2, 5, 8, 19, 52, 66, 82, 83, 88, 93], "abl": [2, 98], "adjac": [2, 8, 23, 27, 30, 31, 32, 40, 41, 47, 48, 49, 66, 67, 70, 78], "due": [2, 15, 18, 40, 89, 93, 95], "As": [2, 4, 8], "result": [2, 5, 8, 19, 22, 39, 46, 84, 93, 95], "longer": [2, 5], "remove_edg": [2, 8, 58, 78], "fals": [2, 4, 5, 8, 48, 52, 58, 61, 73, 74, 78, 80, 86, 93], "0x7c948c649f50": 2, "0x7c948c64a650": 2, "0x7c948c64aa90": 2, "jiji": [2, 4, 5, 30, 48, 50], "zhang": [2, 4, 5, 30, 37, 48, 50], "orient": [2, 4, 5, 18, 19, 27, 30, 48, 50, 51, 55, 89, 93], "discoveri": [2, 4, 5, 17, 20, 30, 48, 50, 93, 96], "presenc": [2, 4, 5, 8, 15, 20, 30, 48, 50, 93, 103], "artifici": [2, 4, 5, 20, 30, 48, 50, 80, 81, 82], "intellig": [2, 4, 5, 20, 30, 48, 50, 80, 81, 82], "172": [2, 4, 5, 30, 48, 50], "16": [2, 4, 5, 30, 48, 50, 102], "1873": [2, 4, 5, 30, 48, 50], "1896": [2, 4, 5, 30, 48, 50], "2008": [2, 4, 5, 30, 48, 50], "url": [2, 4, 5, 17, 20, 30, 40, 48, 50], "http": [2, 4, 5, 11, 17, 20, 30, 40, 48, 50, 70, 71, 78, 87, 89, 91], "www": [2, 4, 5, 17, 30, 48, 50], "sciencedirect": [2, 4, 5, 30, 48, 50], "com": [2, 4, 5, 30, 48, 50], "scienc": [2, 4, 5, 17, 30, 48, 50], "articl": [2, 4, 5, 30, 48, 50], "pii": [2, 4, 5, 30, 48, 50], "s0004370208001008": [2, 4, 5, 30, 48, 50], "doi": [2, 4, 5, 17, 30, 40, 48, 50, 80, 81, 82], "org": [2, 4, 5, 11, 17, 30, 40, 48, 50, 70, 78, 87, 91], "10": [2, 4, 5, 11, 13, 17, 30, 40, 48, 50, 66, 73, 80, 81, 82, 102], "1016": [2, 4, 5, 30, 48, 50, 80, 81, 82], "j": [2, 4, 5, 28, 30, 48, 50, 66, 75, 80, 81, 82], "artint": [2, 4, 5, 30, 48, 50, 80, 81, 82], "08": [2, 4, 5, 30, 48, 50, 86], "001": [2, 4, 5, 30, 48, 50], "total": [2, 4, 5, 6, 8, 9, 10, 11, 13, 14, 36, 52, 76, 78, 93, 97], "run": [2, 4, 5, 8, 11, 13, 86, 91], "script": [2, 4, 5, 8, 11, 13, 89], "0": [2, 4, 5, 6, 8, 10, 11, 13, 14, 16, 17, 40, 52, 62, 63, 66, 70, 73, 74, 75, 76, 83, 84, 86, 88, 89, 90, 93, 94, 95, 97, 100], "minut": [2, 4, 5, 8, 11, 13], "096": [2, 6, 97], "second": [2, 4, 5, 8, 11, 13, 78, 81, 89, 93], "estim": [2, 4, 5, 8, 11, 13, 89], "memori": [2, 4, 5, 8, 11, 13, 86, 89], "usag": [2, 4, 5, 8, 11, 13, 89, 90], "166": 2, "mb": [2, 4, 5, 6, 8, 9, 10, 11, 13, 14, 97], "checking_validity_of_a_pag": [2, 6, 97], "ipynb": [2, 4, 5, 8, 11, 13], "py": [2, 4, 5, 6, 8, 9, 11, 13, 14, 91, 97], "galleri": [2, 4, 5, 8, 11, 13, 89, 97], "p": [4, 5, 27, 74, 89, 95], "call": [4, 11, 13, 17, 20, 22, 41, 42, 43, 46, 82, 89, 93], "rel": [4, 48, 90], "where": [4, 5, 8, 16, 17, 18, 19, 27, 32, 33, 47, 51, 52, 58, 66, 75, 78, 84, 89, 90, 93, 95], "everi": [4, 5, 8, 23, 27, 40, 48, 81, 93, 95], "vertex": [4, 27], "either": [4, 5, 17, 20, 34, 66, 67, 76, 78, 89, 95], "ancestor": [4, 30, 44], "x": [4, 5, 8, 11, 13, 16, 17, 18, 19, 40, 42, 43, 51, 52, 55, 66, 75, 76, 80, 81, 82, 83, 87, 89, 93, 95], "y": [4, 5, 8, 11, 13, 16, 17, 18, 19, 40, 51, 52, 55, 66, 76, 80, 81, 82, 87, 89, 93, 95], "other": [4, 5, 8, 11, 13, 19, 33, 66, 76, 78, 89, 93, 94, 95], "word": 4, "two": [4, 5, 8, 15, 18, 19, 23, 30, 43, 48, 49, 66, 76, 78, 79, 89, 90, 93, 95, 102], "cannot": [4, 30, 48, 80, 95], "d": [4, 5, 18, 19, 30, 32, 40, 41, 42, 43, 47, 51, 52, 58, 78, 93, 95], "seper": 4, "make": [4, 5, 20, 58], "activ": [4, 30], "regardless": [4, 30, 78], "what": [4, 5, 19, 20, 30, 76, 93, 100], "variabl": [4, 5, 8, 17, 30, 40, 48, 52, 59, 60, 74, 75, 76, 79, 83, 84, 88, 89, 93, 95], "admg": [4, 11, 13, 16, 18, 19, 49, 51, 64, 66, 69, 71, 81, 90, 93], "x4": 4, "x1": [4, 13], "x2": [4, 13], "x5": 4, "x6": 4, "x3": [4, 13], "l2": 4, "l1": 4, "paper": 4, "see": [4, 5, 11, 13, 16, 17, 30, 34, 50, 56, 57, 66, 67, 70, 71, 76, 78, 84, 87, 89, 90, 93], "inducing_path": [4, 6, 97], "given": [4, 5, 18, 19, 21, 24, 32, 39, 47, 48, 51, 52, 58, 73, 74, 76, 78, 81, 93, 95], "need": [4, 5, 48, 52, 90, 93, 98], "satisfi": 4, "function": [4, 5, 8, 11, 13, 19, 22, 32, 33, 46, 47, 48, 50, 52, 56, 57, 59, 62, 78, 80, 86, 89, 90, 92, 93, 94, 96, 99, 102, 103], "enough": 4, "pair": [4, 15, 16, 17, 18, 19, 23, 28, 32, 33, 47, 49, 51, 52, 54, 66, 78, 89, 93, 95], "c": [4, 5, 15, 22, 27, 29, 32, 46, 47, 48, 89], "skeleton": 4, "sens": [4, 33, 93], "among": [4, 42, 43, 53, 76, 78, 81, 84, 89, 93], "ii": 4, "primit": 4, "add": [4, 5, 8, 15, 16, 18, 19, 21, 51, 52, 54, 58, 73, 78, 90, 91, 93, 95, 102], "now": [4, 5, 8, 85, 95], "ha": [4, 5, 8, 17, 18, 19, 23, 27, 29, 40, 49, 50, 51, 58, 66, 78, 80, 81, 82, 84, 89, 90, 93, 95, 102, 103], "downstream": 4, "effect": [4, 13, 18, 19, 51, 58, 78, 84, 95, 98], "descend": [4, 45], "open": [4, 5, 90], "up": [4, 5, 52, 93], "still": [4, 5, 76, 89], "avail": [4, 91], "should": [4, 8, 18, 19, 51, 53, 57, 58, 78, 89, 90, 95, 99], "diego": [4, 40], "colombo": [4, 40], "marlo": [4, 40], "h": [4, 40], "maathui": [4, 40], "marku": [4, 40], "kalisch": [4, 40], "thoma": [4, 40], "richardson": [4, 40], "high": [4, 40, 74], "dimension": [4, 40, 89, 95], "annal": [4, 40], "statist": [4, 16, 40], "40": [4, 40, 80, 81, 82], "294": [4, 40], "321": [4, 40], "2012": [4, 40], "1214": [4, 40], "11": [4, 39, 40], "aos940": [4, 40], "159": [4, 6, 97], "164": [4, 6, 11, 13, 14, 97], "graphic": [5, 16, 75, 89, 99], "attach": [5, 95], "notion": 5, "each": [5, 8, 11, 13, 16, 17, 18, 19, 32, 33, 47, 51, 54, 58, 73, 74, 76, 78, 83, 86, 87, 88, 89, 93, 95], "miss": [5, 76, 84], "review": 5, "fundament": [5, 90], "nx": [5, 8, 11, 53, 61, 74, 78, 85, 89, 90, 93], "numpi": [5, 52, 66, 67, 69, 74, 86, 89, 93, 99, 102], "np": [5, 64, 66, 89], "panda": [5, 83, 85, 86, 89], "dowhi": [5, 86], "gcm": 5, "set_random_se": 5, "scipi": [5, 52, 84, 86, 93], "stat": [5, 84], "pywhy_nx": [5, 20, 64, 87, 90], "mathemat": 5, "tupl": [5, 8, 16, 17, 18, 19, 27, 28, 30, 42, 43, 48, 51, 52, 58, 62, 65, 76, 78, 89, 93, 95], "v": [5, 8, 18, 19, 22, 27, 40, 46, 48, 51, 55, 58, 62, 78, 81, 82, 89], "u": [5, 11, 13, 18, 19, 27, 40, 48, 51, 55, 58, 62, 75, 78, 89, 90, 95], "f": [5, 8, 16, 17, 89, 93, 95], "endogen": [5, 89], "observ": [5, 83, 85, 89, 95], "exogen": [5, 72, 73, 89, 95], "distribut": [5, 17, 73, 75, 76, 84, 89], "taken": [5, 48, 78], "togeth": 5, "four": [5, 78], "mechan": [5, 76], "problem": [5, 17], "almost": [5, 23, 29, 49, 103], "alwai": [5, 30, 52, 74, 80, 82, 89, 90, 93, 95], "argument": [5, 11, 13, 15, 16, 17, 18, 19, 48, 51, 52, 54, 55, 58, 78, 86, 89, 93, 95, 102], "parent": [5, 18, 19, 27, 51, 55, 73, 74, 75, 76, 89, 95], "ani": [5, 8, 18, 19, 20, 21, 22, 23, 24, 27, 30, 31, 33, 40, 41, 42, 43, 44, 45, 46, 48, 49, 51, 52, 55, 58, 59, 62, 64, 65, 66, 69, 70, 72, 74, 76, 78, 83, 87, 89, 93, 95], "even": [5, 82], "though": 5, "typic": [5, 8, 48], "unknown": [5, 17], "ground": 5, "truth": 5, "evalu": 5, "build": [5, 90], "our": [5, 90, 95], "intuit": [5, 30, 48], "random": [5, 16, 17, 72, 73, 74, 75, 76, 83, 84, 85, 88, 95], "seed": [5, 72, 75, 76, 85], "reproduc": [5, 78], "12345": 5, "rng": [5, 95], "randomst": [5, 72], "mycustommodel": 5, "predictionmodel": 5, "def": 5, "__init__": 5, "self": 5, "coeffici": 5, "fit": [5, 89], "noth": 5, "know": [5, 93], "pass": [5, 11, 13, 18, 19, 48, 51, 55, 83, 86, 95], "predict": [5, 40], "clone": [5, 91], "don": [5, 78], "t": [5, 52, 53, 63, 78, 83, 88, 89, 93], "realli": 5, "actual": [5, 58, 78, 94], "1234": 5, "xy": [5, 11], "z": [5, 8, 11, 40, 52, 66, 80, 81, 82, 93, 95], "w": [5, 11], "_________": 5, "digraph": [5, 8, 11, 15, 16, 17, 18, 19, 34, 36, 51, 54, 55, 59, 60, 61, 73, 74, 75, 76, 78, 79, 87, 90, 93], "causal_model": 5, "probabilisticcausalmodel": 5, "set_causal_mechan": 5, "scipydistribut": 5, "binom": [5, 76], "5": [5, 13, 22, 34, 46, 84, 86, 88, 95], "n": [5, 10, 18, 19, 22, 46, 51, 55, 75, 78, 95], "9": [5, 40, 52, 91, 93, 102], "additivenoisemodel": 5, "prediction_model": 5, "noise_model": 5, "8": [5, 80, 86, 103], "paramet": [5, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 58, 59, 61, 62, 63, 64, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 93], "anyth": [5, 89, 95], "ensur": [5, 81], "fcm": 5, "correct": [5, 18, 19, 51, 55, 78], "local": [5, 86, 95], "hash": 5, "get": [5, 8, 11, 13, 75, 76, 78], "inconsist": [5, 24, 76, 89], "error": [5, 21, 33, 78, 94], "modifi": [5, 22, 46, 75, 76, 77, 83, 93], "afterward": 5, "without": [5, 11, 13, 15, 19, 20, 53, 58, 78, 84, 89, 93], "updat": [5, 18, 19, 51, 58, 78], "empti": [5, 30, 52, 80, 81, 82, 93, 95], "small": 5, "workaround": 5, "pre": [5, 66, 67, 102], "datafram": [5, 83, 85], "column": [5, 64, 69, 70, 83, 88], "sampl": [5, 37, 73, 74, 75, 76, 85, 89, 102], "draw_sampl": 5, "num_sampl": 5, "500": [5, 83], "head": 5, "col": 5, "show": [5, 8, 11, 86], "collid": [5, 27, 30, 31, 37, 40, 81], "collis": 5, "arrow": [5, 94], "00": [5, 6, 9, 10, 14, 97], "100": [5, 103], "881": 5, "75it": 5, "3": [5, 6, 8, 13, 17, 18, 19, 27, 41, 51, 58, 70, 76, 78, 82, 86, 88, 91, 93, 94, 97, 103], "dtype": 5, "0x7c93ca895490": 5, "suffici": [5, 18, 50, 51, 93], "assumpt": [5, 18, 19, 51, 53, 93, 95], "queri": [5, 8, 52, 78, 93], "list": [5, 17, 27, 28, 30, 32, 36, 47, 48, 52, 54, 58, 59, 64, 65, 69, 70, 74, 75, 76, 78, 83, 88, 89, 90, 93, 95, 102, 103], "predecessor": [5, 95], "children": [5, 18, 19, 51, 55, 89, 95], "successor": 5, "explor": [5, 27, 95], "statement": [5, 23, 89], "impli": [5, 18, 51, 70, 76, 93], "d_separ": [5, 81], "home": 5, "circleci": 5, "project": [5, 70, 91, 102, 103], "intro": [5, 6, 97], "intro_causal_graph": [5, 6, 11, 13, 97], "140": 5, "deprecationwarn": 5, "deprec": [5, 89, 90], "v3": 5, "pleas": [5, 78, 90, 94], "is_d_separ": [5, 81], "143": 5, "semi": [5, 19, 22, 32, 46, 47, 93, 99, 103], "possibli": [5, 40, 41, 42, 43, 61, 75, 76, 78, 95, 99, 103], "depict": [5, 52, 93], "just": [5, 8, 15, 16, 17, 18, 19, 51, 55, 85, 91, 93, 94, 95], "set_nodes_as_latent_confound": [5, 11], "anymor": 5, "form": [5, 23, 31, 32, 33, 40, 47, 84, 92, 93, 94], "cluster": 5, "compon": [5, 15, 20, 41, 76, 89], "short": 5, "c_compon": [5, 15, 89], "m": [5, 20, 80, 81, 82, 95, 102], "similarli": [5, 78, 80, 93, 95], "m_separ": [5, 102], "bidirected_edge_nam": [5, 15, 16, 17, 19, 55, 79, 80, 81, 82, 93], "after": [5, 24, 48, 50], "besid": [5, 48, 78], "commonli": 5, "base": [5, 18, 19, 20, 24, 36, 51, 75, 78, 90, 93, 103], "seek": 5, "reconstruct": 5, "part": [5, 22, 46, 89], "next": [5, 13, 93, 95], "section": [5, 95], "briefli": 5, "overview": [5, 98], "usual": [5, 89, 90], "so": [5, 11, 19, 74, 78, 80, 89, 90, 93, 94, 95], "github": [5, 71, 90], "why": [5, 91], "_": [5, 89], "repo": 5, "relev": [5, 52, 74, 78, 86, 89, 90, 93, 95], "assum": [5, 58, 83, 85, 90, 93, 95, 96], "uncertain": [5, 31, 40], "via": [5, 8, 18, 19, 51, 55, 58, 78, 91], "ll": 5, "earlier": 5, "learnt": 5, "variant": 5, "pc": [5, 18, 51, 93], "let": [5, 11, 13], "add_edges_from": [5, 11, 13, 18, 19, 51, 58, 78], "undirected_edge_nam": [5, 11, 15, 16, 17, 18, 19, 51, 55, 80, 81, 82, 93], "unshield": [5, 37, 48], "present": [5, 8, 15, 18, 19, 20, 23, 29, 66, 80, 81, 82, 88, 93], "origin": [5, 17, 50, 58, 78, 95], "orient_uncertain_edg": [5, 11, 18, 19, 51, 55], "allow": [5, 8, 16, 18, 19, 40, 51, 53, 66, 81, 84, 89, 93, 94, 95], "complex": [5, 19, 93, 95], "judea": [5, 16, 17], "pearl": [5, 16, 17], "reason": 5, "cambridg": 5, "univers": 5, "press": [5, 20, 40], "usa": 5, "2nd": 5, "edit": 5, "2009": 5, "isbn": [5, 40], "052189560x": 5, "peter": [5, 20, 40], "spirt": [5, 40], "clark": [5, 40], "glymour": [5, 40], "richard": [5, 40], "schein": [5, 40], "causat": [5, 40], "search": [5, 22, 40, 41, 42, 43, 46, 48, 81], "volum": [5, 20, 40], "81": [5, 40], "mit": [5, 40], "01": [5, 6, 9, 14, 40, 97], "1993": [5, 16, 40], "978": [5, 40], "4612": [5, 40], "7650": [5, 40], "1007": [5, 40], "2748": [5, 40], "335": [5, 6, 97], "248": [5, 6, 97], "04": 6, "590": 6, "execut": [6, 9, 10, 14, 86, 97], "file": [6, 9, 10, 14, 68, 71, 86, 94, 97], "auto_exampl": [6, 9, 10, 14], "mem": [6, 9, 10, 14, 97], "introduct": [6, 15, 18, 19, 78, 81, 87, 97], "graph": [6, 7, 9, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 30, 32, 33, 34, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 54, 55, 56, 57, 58, 59, 61, 62, 63, 64, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 89, 91, 96, 97, 99, 100, 102, 103], "02": [6, 97], "165": [6, 97], "7": [6, 13, 82, 86, 97], "compris": [8, 78, 89], "user": [8, 16, 78, 86, 89, 90, 95], "arbitrari": [8, 78], "intern": [8, 15, 16, 18, 33, 51, 55, 90, 93], "semant": 8, "normal": [8, 74, 75], "appropri": 8, "relat": [8, 11, 13, 15, 89, 90, 93], "matplotlib": [8, 86], "pyplot": 8, "plt": 8, "pg": 8, "compos": 8, "directed_g": 8, "bidirected_g": 8, "add_nodes_from": [8, 78], "edge_typ": [8, 18, 19, 51, 54, 58, 78, 90, 93], "iv": 8, "po": [8, 11, 13, 87, 88], "spring_layout": [8, 11], "visual": [8, 13, 14, 15, 18, 19, 78, 87, 97], "fig": 8, "ax": 8, "subplot": 8, "draw_networkx": 8, "get_graph": [8, 78, 90], "set_titl": 8, "instrument": 8, "tight_layout": 8, "block": 8, "is_direct": [8, 78], "multigraph": [8, 78], "is_multigraph": [8, 78], "bidirected_edg": [8, 15, 19, 55, 93], "0x7c948b6c43d0": 8, "0x7c93caa5df10": 8, "similar": [8, 19, 22, 32, 46, 47, 73, 78, 89, 90, 93], "default": [8, 13, 15, 16, 17, 18, 19, 21, 24, 27, 30, 33, 40, 41, 42, 43, 48, 51, 52, 53, 54, 58, 59, 72, 73, 74, 75, 76, 78, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 93, 95], "store": [8, 11, 13, 15, 18, 19, 64, 71, 78, 92, 93, 94], "insid": [8, 102], "assert": [8, 90], "order": [8, 11, 18, 19, 22, 36, 46, 51, 52, 53, 55, 63, 64, 69, 70, 78, 83, 88, 93, 95], "len": [8, 78], "number_of_nod": [8, 78], "new": [8, 78, 90, 95, 100], "has_nod": [8, 78], "add_nod": 8, "remove_nod": 8, "per": [8, 84], "specifi": [8, 11, 18, 19, 51, 58, 76, 78, 79, 84, 90, 93, 95], "when": [8, 18, 19, 24, 48, 51, 58, 78, 80, 84, 86, 89, 90, 95, 100], "you": [8, 19, 76, 78, 83, 90, 91, 93, 94, 98], "well": [8, 36, 78, 95], "has_edg": [8, 62, 78, 90], "standard": [8, 94], "adj": [8, 78], "degre": [8, 78], "instead": [8, 78, 83], "moreov": [8, 75, 76, 78], "neighbor": [8, 78], "uni": 8, "counterpart": 8, "mani": [8, 78, 90], "connect": [8, 16, 18, 20, 28, 48, 51, 52, 55, 76, 78, 79, 81, 84, 93], "iter": [8, 15, 18, 19, 51, 53, 55, 63, 78, 93], "through": [8, 78, 89, 95], "item": [8, 78], "dictionari": [8, 11, 13, 18, 19, 51, 58, 78, 88, 90, 95], "385": [8, 9, 97], "170": [8, 9, 97], "plot_mixed_edge_graph": [8, 9, 97], "mixededg": [9, 97], "mixededgegraph": [9, 15, 16, 18, 19, 20, 58, 64, 79, 85, 87, 90, 93, 97, 102], "000": 10, "choos": [11, 13, 24], "place": [11, 13, 20, 75, 76, 79], "fix": [11, 76, 100, 101, 102, 103], "easili": 11, "creat": [11, 13, 25, 52, 59, 76, 78, 90, 93], "posit": [11, 13, 87, 88, 102], "label": [11, 18, 19, 34, 51, 58, 78, 79, 87, 102], "altern": 11, "own": [11, 94], "manual": [11, 71, 78], "softwar": [11, 13, 90], "dagitti": [11, 99], "arrai": [11, 13, 52, 64, 66, 67, 69, 70, 83, 88, 89, 93, 94, 102], "15471958": 11, "42925134": 11, "7990356": 11, "90151211": 11, "36916753": 11, "62354034": 11, "6548282": 11, "09580111": 11, "92997669": 11, "cpdag": [11, 13, 19, 25, 33, 38, 39, 51, 64, 67, 69, 70, 71, 93, 102, 103], "dummi": [11, 13], "borrow": [11, 13], "pos_g": [11, 13], "k": [11, 58, 78], "inspect": [11, 13], "notic": [11, 13], "kei": [11, 13, 15, 16, 18, 19, 51, 52, 54, 58, 78, 87, 88, 89, 93, 95], "coordin": [11, 13, 87], "valu": [11, 13, 15, 16, 18, 19, 51, 52, 54, 58, 66, 67, 73, 74, 76, 78, 87, 89, 93, 94, 95], "dot_g": [11, 13], "dot_admg": 11, "dot_cpdag": 11, "dot_pag": 11, "engin": [11, 13, 90], "neato": [11, 13], "leverag": [11, 95], "inform": [11, 16, 17, 67, 78, 84, 86, 87, 89, 95], "document": [11, 56, 57, 70, 71, 78, 87, 89, 90, 92, 93], "doc": [11, 78, 87, 89], "438": [11, 14, 97], "draw_and_compare_graphs_with_same_layout": [11, 14, 97], "rather": [13, 19, 78, 93, 95], "messi": 13, "output": [13, 66, 68, 83, 86, 93, 95], "stationarytimeseriesdigraph": [13, 53, 59, 60, 84, 93], "timeseries_layout": 13, "max_lag": [13, 52, 53, 54, 56, 57, 58, 59, 60, 83, 84, 85, 93], "ts_edg": 13, "first": [13, 16, 22, 46, 48, 50, 76, 78, 80, 81, 89, 91, 93, 95], "default_g": 13, "nice": 13, "variable_ord": [13, 88], "scale": [13, 88], "33333333": 13, "067": [13, 14, 97], "plot_timeseries_graph": [13, 14, 97], "504": 14, "incoming_directed_edg": [15, 16, 17, 18, 19, 51, 55, 93], "none": [15, 16, 17, 18, 19, 21, 22, 23, 24, 26, 27, 30, 40, 41, 42, 43, 46, 48, 49, 51, 52, 53, 54, 55, 56, 57, 58, 72, 73, 74, 75, 76, 78, 80, 82, 83, 84, 85, 86, 87, 88, 89, 93, 95], "incoming_bidirected_edg": [15, 16, 17, 19, 55, 93], "incoming_undirected_edg": [15, 16, 17, 18, 19, 51, 55, 93], "str": [15, 16, 17, 18, 19, 20, 21, 22, 24, 27, 30, 31, 33, 40, 41, 42, 43, 44, 45, 46, 48, 51, 54, 55, 58, 59, 62, 64, 65, 68, 69, 70, 71, 72, 78, 79, 80, 81, 82, 83, 87, 93], "attr": [15, 16, 17, 18, 19, 51, 52, 53, 54, 55, 56, 57, 58, 78, 87, 93], "constitut": [15, 50, 89, 93], "did": [15, 93], "while": [15, 89, 90, 93], "input": [15, 16, 17, 18, 19, 51, 52, 74, 75, 78, 92, 93, 95], "option": [15, 16, 17, 18, 19, 21, 22, 24, 27, 33, 40, 41, 42, 43, 46, 48, 51, 52, 53, 54, 58, 59, 64, 72, 73, 74, 75, 76, 78, 83, 84, 85, 87, 88, 93], "initi": [15, 16, 17, 18, 19, 51, 52, 78, 83, 85, 93], "accept": [15, 16, 17, 18, 19, 51, 93], "keyword": [15, 16, 18, 19, 51, 52, 54, 58, 78, 90, 93, 95, 102], "attribut": [15, 16, 18, 19, 24, 34, 51, 52, 54, 58, 74, 75, 76, 77, 78, 87, 89, 93, 95], "subgraph": [15, 16, 17, 18, 19, 40, 51, 58, 78, 93], "underneath": [15, 18, 19, 93], "hood": [15, 18, 19, 93], "non": [15, 18, 23, 27, 30, 31, 33, 49, 53, 66, 78, 80, 81, 93, 95], "stand": [15, 18, 89, 93], "indic": [15, 17, 18, 19, 23, 29, 49, 50, 52, 66, 89, 93, 95], "access": [15, 18, 19, 51, 58, 78, 89, 93], "sub_directed_graph": [15, 18, 19, 51, 55, 93], "Their": [15, 18, 19, 93], "format": [15, 18, 19, 52, 68, 71, 93, 94], "directed_edg": [15, 18, 19, 51, 55, 93], "sub_bidirected_graph": [15, 19, 55, 93], "sub_undirected_graph": [15, 18, 19, 51, 55, 93], "undirected_edg": [15, 18, 19, 51, 55, 93], "cycl": [15, 18, 20, 23, 29, 33, 49, 84, 90, 93, 103], "exist": [15, 16, 18, 22, 30, 46, 58, 73, 74, 75, 76, 78, 80, 82, 90, 93, 96], "beyond": [15, 93], "properti": [15, 18, 19, 51, 55, 78, 93], "map": [15, 16, 17, 18, 19, 51, 55, 66, 67, 78, 89, 90, 93, 94, 95], "edgeview": [15, 18, 19, 51, 55, 78], "trivial": [15, 48], "themself": 15, "comp": 15, "sub": [15, 18, 19, 20, 51, 55, 78], "augment": [16, 17, 21, 24, 80, 93, 95], "diagram": [16, 17, 76, 99], "intervent": [16, 17, 72, 89, 93, 102], "were": [16, 79], "introduc": 16, "hard": 16, "soft": [16, 17, 72], "explicit": [16, 89], "tbd": 16, "guid": [16, 89, 90], "exactli": [16, 17, 58], "index": [16, 17, 52, 64, 70, 90, 93], "number": [16, 17, 18, 19, 21, 22, 24, 28, 46, 51, 58, 73, 74, 76, 78, 81, 82, 83, 84, 85, 89, 93, 95], "appli": [16, 17, 20, 50, 72, 73, 75, 89], "rightarrow": [16, 17, 66, 76, 95], "regular": [16, 17, 76], "aspect": [16, 90], "proceed": [16, 17, 20], "49th": 16, "session": 16, "institut": 16, "page": [16, 26, 90, 100], "399": 16, "401": 16, "incoming_circle_edg": [17, 19, 55, 93], "been": [17, 50, 80], "It": [17, 23, 41, 78, 88, 89, 95], "handl": [17, 21, 24, 66, 78, 99], "target": [17, 22, 46, 72, 77, 89, 93], "integ": [17, 22, 46, 74, 78, 89, 95], "sigma": 17, "special": [17, 19, 48, 89, 93], "known": [17, 90, 93, 95], "domain": [17, 21, 24, 28, 76], "environ": 17, "amin": 17, "jaber": 17, "murat": 17, "kocaoglu": 17, "karthikeyan": 17, "shanmugam": 17, "elia": 17, "bareinboim": 17, "character": [17, 93], "advanc": 17, "neural": 17, "process": [17, 83, 84, 85, 93, 95], "system": [17, 86, 95], "33": 17, "9551": 17, "9561": 17, "2020": [17, 20, 86], "2019": [17, 80, 81, 82], "fusion": 17, "nation": 17, "academi": 17, "113": 17, "27": 17, "7345": 17, "7352": 17, "juli": 17, "2016": 17, "publish": 17, "pna": 17, "content": 17, "1073": 17, "1510507113": 17, "uncertainti": [18, 19, 20, 51, 93], "b": [18, 29, 32, 47, 51, 70, 80, 81, 82, 93], "implicit": [18, 19, 51, 93], "score": [18, 51, 93], "ge": [18, 51, 93], "approach": [18, 19, 51, 90, 93, 102], "suspect": [18, 51, 93], "directino": [18, 93], "u_of_edg": [18, 19, 51, 58, 62, 78], "v_of_edg": [18, 19, 51, 58, 62, 78], "automat": [18, 19, 51, 52, 58, 78, 93], "alreadi": [18, 19, 48, 51, 58, 78, 83, 89, 95], "u_for_edg": [18, 19, 51, 58, 78], "v_for_edg": [18, 19, 51, 58, 78], "string": [18, 19, 51, 58, 78, 87, 89, 95], "hashabl": [18, 19, 51, 58, 78], "assign": [18, 19, 51, 58, 69, 70, 74, 78, 95], "collect": [18, 19, 51, 58, 78], "ebunch_to_add": [18, 19, 51, 58, 78], "twice": [18, 19, 51, 58, 78], "duplic": [18, 19, 51, 58, 78], "ebunch": [18, 19, 51, 58, 78], "take": [18, 19, 41, 51, 58, 75, 76, 78, 90, 92, 93, 95], "preced": [18, 19, 51, 58, 78, 95], "int": [18, 19, 21, 22, 24, 27, 28, 30, 31, 40, 41, 42, 43, 44, 45, 46, 48, 51, 52, 53, 54, 55, 56, 57, 58, 59, 62, 64, 65, 69, 70, 72, 74, 75, 76, 78, 83, 84, 85, 88, 93], "float": [18, 19, 22, 24, 27, 30, 31, 40, 41, 42, 43, 44, 45, 46, 48, 51, 55, 58, 59, 62, 64, 65, 69, 70, 72, 73, 74, 75, 76, 78, 83, 84, 88], "point": [18, 19, 20, 22, 46, 51, 52, 53, 55, 58, 62, 79, 83, 84, 85, 88, 89, 93, 95], "possible_children": [18, 19, 51, 55], "consid": [18, 19, 22, 46, 48, 51, 55, 58, 85, 89, 95], "possible_par": [18, 19, 51, 55], "term": [19, 93, 95, 99], "essenti": [19, 93], "extend": [19, 93], "sub_circle_graph": [19, 55, 93], "circle_edg": [19, 55, 93], "exponenti": [19, 93], "increas": [19, 93], "occur": [19, 72, 83, 93], "main": [19, 78, 93], "complic": [19, 90, 93], "aris": [19, 93], "combin": [19, 93, 95], "abov": [19, 83, 93, 95], "certain": [19, 48, 90, 93], "kind": [19, 78, 93], "matter": [19, 93], "loss": [19, 93], "deal": [19, 93], "flip": [19, 93], "discuss": [19, 93, 95], "dictat": [19, 93], "sort": [19, 36, 93, 95], "There": [19, 71, 78, 93], "opposit": [19, 93], "qualifi": 19, "yield": [19, 78], "directed_edge_typ": 20, "bidirected_edge_typ": 20, "copi": [20, 58, 70, 78], "bool": [20, 23, 27, 29, 30, 31, 32, 33, 47, 48, 49, 50, 51, 52, 53, 55, 58, 59, 61, 62, 73, 74, 78, 80, 81, 86, 93], "acyclifi": 20, "cyclic": [20, 61, 102], "aci": 20, "replac": [20, 78, 80], "strongli": 20, "fulli": [20, 79, 95], "Then": [20, 50, 66, 76, 91, 95], "sc": 20, "made": 20, "jori": 20, "mooij": 20, "tom": 20, "claassen": 20, "jona": 20, "david": [20, 34, 36, 39], "sontag": 20, "editor": 20, "36th": 20, "confer": 20, "uai": 20, "124": 20, "machin": [20, 34, 36, 39], "research": [20, 34, 36, 39, 90], "1159": 20, "1168": 20, "pmlr": 20, "03": 20, "06": 20, "aug": 20, "mlr": 20, "v124": 20, "mooij20a": 20, "html": [20, 78], "n_domain": [21, 24, 76], "on_error": [21, 33], "augmentedgraph": [21, 24, 93, 102], "ignor": [21, 24, 30, 33, 58, 78], "warn": [21, 24, 71, 78, 89], "cutoff": [22, 46], "depth": [22, 46], "stop": [22, 46], "length": [22, 40, 41, 42, 43, 46, 64, 69, 70, 83, 89], "veri": [22, 32, 46, 47, 90], "simple_path": [22, 32, 46, 47], "all_simple_path": [22, 46], "larg": [22, 46, 89, 94], "long": [22, 46], "runtim": [22, 46, 81, 82], "has_path": [22, 46], "befor": [22, 46, 48, 95], "r": [22, 46, 70, 80, 82, 95, 99], "sedgewick": [22, 46], "addison": [22, 46], "weslei": [22, 46], "profession": [22, 46], "3rd": [22, 46, 83], "ed": [22, 46], "2001": [22, 46], "step": 23, "involv": 23, "is_valid": [23, 49, 50], "boolean": [23, 29, 49, 50, 81], "all_poss_snod": 24, "comput": [24, 39, 41, 42, 43, 48, 61, 75, 76, 78, 95], "invari": [24, 76, 95], "proce": 24, "domain_id": [24, 95], "1877": 26, "max_path_length": [27, 40, 41, 42, 43, 48], "discrimin": 27, "least": 27, "maximum": [27, 28, 40, 41, 42, 43, 48, 52, 53, 54, 59, 84, 85, 93], "distanc": [27, 48], "1000": [27, 40, 41, 42, 43, 48, 83, 84, 85], "explored_nod": 27, "disc_path": 27, "found_discriminating_path": 27, "wa": [27, 33, 80, 82], "max_numb": 28, "id": [28, 95], "connected_pair": 28, "adc": 29, "adc_pres": 29, "node_x": [30, 40, 41, 42, 43], "node_i": [30, 40, 41, 42, 43], "destin": 30, "otherwis": [30, 78, 82], "therefor": [30, 66, 84, 90, 94, 95], "along": [30, 40], "henc": [30, 48, 95], "node1": 31, "node2": 31, "node3": 31, "noncollid": 31, "is_noncollid": 31, "nonempti": [32, 47], "sequenc": [32, 47, 78], "appear": [32, 47, 48, 78], "onc": [32, 47, 78], "toward": [32, 47, 89], "is_simple_path": [32, 47], "most": [33, 89, 90, 93], "compliant": [33, 93], "constrain": 33, "compel": 34, "revers": 34, "maxwel": [34, 36, 39], "chicker": [34, 36, 39], "bayesian": [34, 36, 39], "network": [34, 36, 39, 84], "journal": [34, 36, 39], "445": [34, 36, 39], "498": [34, 36, 39], "2002": [34, 36, 39], "provabl": 35, "tractabl": 35, "featur": [35, 78, 89, 90, 100, 101, 102, 103], "thu": [35, 91], "produc": 35, "topolog": [36, 95], "accord": [36, 66, 67], "obei": 36, "meek": 37, "dsep": 40, "characterist": 40, "subpath": 40, "tripl": 40, "triangl": 40, "meet": 40, "fact": 40, "shield": 40, "smaller": [41, 42, 43], "subset": [41, 42, 43, 76], "intersect": 41, "biconnect": 41, "restrict": [41, 42, 43], "stationarytimeseriespag": [42, 43, 93], "pdst": 42, "pds_t_set": [42, 43], "lag": [42, 43, 52, 53, 54, 58, 59, 62, 63, 83, 84, 85, 88, 89, 93], "being": [42, 43, 78, 89, 95], "less": [42, 43, 58, 89], "max": [42, 43, 52, 58, 62, 63, 88, 93], "pdst_path": 43, "addit": [43, 48, 72, 75, 84, 86, 87, 90, 93, 95], "first_nod": 48, "second_nod": 48, "force_circl": 48, "forbid_nod": 48, "uncov": [48, 102], "explan": 48, "could": [48, 52, 93], "mean": [48, 75, 76, 78, 93, 95], "previou": [48, 83], "travers": 48, "forbidden": 48, "immedi": 48, "third": 48, "come": 48, "r5": 48, "prevent": 48, "maxim": 49, "bi": 49, "said": [50, 95], "establish": 50, "back": 50, "reconvert": 50, "incoming_graph_data": [52, 53, 56, 57, 93], "check_time_direct": [52, 93], "repeat": [52, 93], "themselv": [52, 93], "cross": [52, 93], "product": [52, 93], "to_networkx_graph": [52, 93], "dict": [52, 74, 78, 87, 88, 93], "2d": [52, 88, 89, 93], "spars": [52, 93], "matrix": [52, 66, 89, 93], "direction": [52, 53, 93], "properli": [52, 93], "delet": [52, 76, 84, 93], "depend": [52, 83, 86, 91, 93], "enabl": [53, 93, 95], "forward": [53, 93], "serv": [53, 93], "layer": [53, 93, 95], "imbu": [56, 57, 58, 93, 95], "basetimeseriesgraph": [56, 57, 93], "add_homologous_edg": 58, "homolog": [58, 62, 93], "tsnode": [58, 62, 89, 93], "absolut": 58, "equal": [58, 74, 83], "preserv": [58, 89], "as_view": [58, 78], "read": [58, 78, 89], "to_direct": [58, 78], "node_attr_dict_factori": [58, 78], "alia": [58, 78], "tsdict": 58, "node_dict_factori": [58, 78], "networkxerror": [58, 78], "remove_edges_from": [58, 78], "Will": [58, 78, 86], "fail": [58, 78, 82], "silent": [58, 78], "remove_homologous_edg": 58, "include_contemporan": 59, "create_us": [59, 60], "analog": [59, 93], "_description_": 59, "func": [59, 95], "include_self_loop": 61, "summari": [61, 85], "timeseriesdigraph": [61, 93], "summary_g": 61, "_must_": 62, "timeseriesgraph": [63, 88, 93], "arr": [64, 66, 69, 70], "ndarrai": [64, 65, 83], "arr_idx": [64, 69, 70], "graph_typ": [64, 69, 71], "shape": [64, 66, 67, 69, 70, 83, 84, 85, 87, 89], "n_node": [64, 66, 67, 69, 70, 84, 85], "row": [64, 69, 70, 88, 89], "causal_graph": [66, 67], "instanc": [66, 67, 68, 71, 83, 89], "numpy_graph": [66, 67], "ijth": 66, "entri": [66, 89, 95], "zero": 66, "symmetr": [66, 89], "jith": 66, "20": 66, "edge_to_value_map": [66, 69], "pcalg": [66, 67, 70, 99, 102], "numer": [66, 78, 90], "treat": [66, 78], "leftrightarrow": [66, 95], "element": [66, 93, 99], "21": [66, 86, 102], "issu": [66, 90, 94], "nodelist": 66, "bow_graph": 66, "numpy_to_graph": 66, "pcalg_to_graph": 67, "filenam": [68, 71], "tetrad": [68, 71, 99, 102], "text": [68, 71, 75, 94], "write": [68, 86], "enumer": [69, 70, 94], "amat_typ": 70, "pcalgpagendpoint": 70, "amattyp": 70, "cran": 70, "web": 70, "pdf": 70, "conveni": 70, "amat": 70, "No": [70, 93], "edgemark": 70, "oppos": 70, "matric": 70, "cmu": 71, "phil": 71, "io": [71, 89, 100], "guarante": 71, "your": [71, 90], "adher": [71, 89], "random_st": [72, 73, 74, 75, 76, 83, 84, 85], "interven": 72, "simultanen": 72, "perturb": 72, "gaussian_noise_funct": [72, 75, 76, 95], "nois": [72, 73, 74, 95], "cpd": [73, 95], "tabularcpd": [73, 74, 95], "noise_ratio": [73, 74, 95], "overwrit": [73, 74], "probabl": [73, 74, 84, 89, 95], "wrapper": [73, 102], "around": [73, 88, 90, 95], "bayesiannetwork": 73, "add_cpd": 73, "tabl": [73, 95], "state": [73, 83, 84, 95], "associ": [73, 78, 89, 95], "ratio": [73, 74, 88], "uniform": [73, 74, 95], "90": 73, "cardinality_lim": 74, "weight_lim": 74, "noise_ratio_lim": 74, "cardin": 74, "pgmpy": [74, 95], "parent_funct": [74, 75, 76, 95], "exogenous_funct": [74, 95], "exogenous_distribut": [74, 95], "cpt": [74, 95], "weight": [74, 75, 76, 78, 84, 94, 95], "categori": 74, "choic": [74, 78, 93], "rang": 74, "binari": 74, "sum": [74, 78], "low": [74, 90], "randomgener": 74, "alter": [74, 95], "node_mean_lim": [75, 76], "node_std_lim": [75, 76], "edge_funct": [75, 76], "callabl": [75, 76, 84, 89, 95], "edge_weight_lim": [75, 76], "parametr": 75, "uniformli": [75, 76, 95], "limit": 75, "fashion": [75, 88, 90], "x_i": 75, "sum_": 75, "w_j": 75, "f_j": 75, "x_j": 75, "epsilon_i": 75, "sim": 75, "mu_i": 75, "sigma_i": 75, "lower": [75, 76], "upper": [75, 76, 94], "bound": [75, 76], "std": [75, 76, 95], "iid": [75, 76], "transform": [75, 76], "nonlinear": [75, 76, 95], "lambda": [75, 76], "ident": [75, 76, 78], "linear_gaussian": [75, 76, 95], "n_nodes_with_s_nod": 76, "n_invariances_to_tri": 76, "multi": 76, "particular": 76, "across": [76, 78, 84, 89, 93], "split": 76, "make_graph_linear_gaussian": [76, 102], "n_": 76, "randomli": [76, 95], "remain": 76, "At": 76, "keep": [76, 88], "g1": 77, "g2": 77, "link": [78, 89, 100], "experiment": [78, 89, 99], "meant": 78, "caution": [78, 90], "multidigraph": 78, "mention": 78, "below": [78, 89, 90], "match": 78, "entir": 78, "add_edge_typ": [78, 90], "edge_subgraph": 78, "cach": [78, 89], "few": [78, 93], "wherea": 78, "__contains__": 78, "__getitem__": 78, "__iter__": 78, "__len__": 78, "hold": 78, "itself": [78, 89], "behav": 78, "idiom": 78, "loop": 78, "nbr": 78, "datadict": 78, "adjacencyview": 78, "clear_edge_typ": 78, "clear": 78, "shallow": 78, "deepcopi": 78, "docstr": [78, 89], "peopl": 78, "might": [78, 90], "nbunch": 78, "degreeview": 78, "report": [78, 86], "incid": 78, "deg_dict": 78, "request": [78, 90], "ddict": 78, "quietli": 78, "out": [78, 88, 90, 95], "get_edge_data": 78, "doesn": 78, "edge_dict": 78, "graph_attr_dict_factori": 78, "keyerror": 78, "edge_ind": 78, "identifi": [78, 89], "technic": [78, 83, 89], "control": 78, "nbunch_it": 78, "membership": 78, "niter": 78, "number_of_edge_typ": 78, "number_of_edg": [78, 90], "count": 78, "nedg": 78, "size": 78, "todo": [78, 95], "expect": [78, 90], "subclass": 78, "attempt": 78, "contrast": 78, "deep": 78, "transfer": 78, "to_undirect": 78, "desir": 78, "unless": [78, 93], "uc_label": 79, "g_copi": 79, "minim": [80, 82, 89, 102], "testminsep": 80, "line": [80, 82], "6": [80, 86, 97, 102], "neq": 80, "r_x": 80, "r_y": 80, "deem": [80, 82], "necessari": [80, 82], "moral": 80, "candid": 80, "later": [80, 82], "largest": [80, 82], "vertic": [80, 81, 82], "is_minimal_m_sep": 80, "els": 80, "van": [80, 81, 82], "der": [80, 81, 82], "zander": [80, 81, 82], "li\u015bkiewicz": [80, 81, 82], "textor": [80, 81, 82], "adjust": [80, 81, 82], "criteria": [80, 81, 82], "framework": [80, 81, 82], "vol": [80, 81, 82], "270": [80, 81, 82], "pp": [80, 81, 82], "2018": [80, 81, 82], "12": [80, 81, 82], "006": [80, 81, 82], "testsep": [81, 82], "further": 81, "breadth": 81, "findsep": 82, "math": 82, "findminsep": 82, "anterior": 82, "union": 82, "var_arr": [83, 85], "n_time": [83, 84, 85], "n_realiz": [83, 84], "var_nam": 83, "var": [83, 84, 85], "arraylik": [83, 84, 85, 88], "n_variabl": [83, 84], "vector": [83, 89], "auto": 83, "regress": 83, "dimens": 83, "autoregress": [83, 85], "realiz": [83, 84], "node_nam": 83, "multivari": [83, 95], "p_time_self": 84, "p_time_var": 84, "p_contemporan": 84, "weight_dist": 84, "_continuous_distn": 84, "norm_gen": 84, "contemporan": 84, "instantan": 84, "simulate_data_from_var": 84, "var_model": 84, "never": 84, "worri": 84, "about": [84, 90], "situat": 84, "instantaen": 84, "x_df": 85, "dataset": [85, 89, 95], "right": [85, 88], "fid": 86, "show_path": 86, "debug": 86, "help": 86, "triag": 86, "bug": 86, "sy": 86, "stdout": 86, "develop": [86, 90, 102, 103], "submit": 86, "platform": 86, "linux": 86, "15": 86, "1067": 86, "aw": 86, "x86_64": 86, "glibc2": 86, "feb": 86, "37": 86, "gcc": 86, "usr": 86, "bin": 86, "cpu": 86, "36": 86, "core": [86, 99], "68": [86, 102], "gb": 86, "openbla": 86, "17": [86, 102], "thread": 86, "sklearn": 86, "backend": 86, "macosx": 86, "Not": 86, "version": [86, 89, 90, 93, 100], "info": 86, "joblib": [86, 89], "squar": 87, "rankdir": 87, "plaintext": 87, "dot": 87, "languag": 87, "center": 88, "aspect_ratio": 88, "3333333333333333": 88, "left": 88, "top": [88, 90], "bottom": 88, "factor": [88, 95], "plot": 88, "width": 88, "height": 88, "lai": 88, "histor": 88, "hope": 89, "tacit": 89, "convent": 89, "contributor": [89, 90], "aim": 89, "redund": 89, "begin": 89, "didn": 89, "elsewher": 89, "1d": 89, "whose": 89, "often": 89, "public": [89, 90], "formal": 89, "maintain": [89, 90, 94], "backward": 89, "compat": 89, "privat": 89, "assur": 89, "stabl": [89, 90], "__call__": 89, "embed": 89, "etc": [89, 90], "__doc__": 89, "pep257": 89, "numpydoc": 89, "give": [89, 95, 98], "basic": [89, 90], "doctest": 89, "directori": 89, "exemplifi": 89, "referenc": 89, "sometim": 89, "built": 89, "alongsid": 89, "descript": [89, 90], "tool": [89, 90], "usabl": 89, "subject": 89, "futur": [89, 95], "polici": 89, "letter": 89, "readthedoc": 89, "facilit": 89, "parallel": 89, "effici": [89, 100, 101, 102, 103], "delai": 89, "n_featur": 89, "n_sampl": 89, "shorthand": 89, "distinctli": 89, "noun": 89, "langl": 89, "rangl": 89, "off": [89, 93], "symmetric_difference_map": 89, "composit": 90, "encourag": 90, "pull": 90, "contribut": [90, 94, 102, 103], "exhaust": 90, "earli": 90, "best": 90, "goal": 90, "converg": 90, "releas": 90, "trait": 90, "major": [90, 93, 100, 101, 102, 103], "alpha": [90, 99], "drastic": 90, "robust": 90, "commun": [90, 94], "curv": 90, "transit": 90, "lie": 90, "hand": 90, "summar": 90, "implicitli": [90, 95], "focus": 90, "design": 90, "lightweight": 90, "sole": 90, "instal": 90, "histori": 90, "yourself": 90, "interest": 90, "solv": 90, "improv": [90, 102, 103], "overal": 90, "hesit": 90, "reach": 90, "who": [90, 102, 103], "codebas": 90, "close": 91, "pypi": 91, "poetri": [91, 103], "recommend": 91, "repositori": 91, "git": 91, "cd": 91, "heavili": 93, "reli": 93, "cover": 93, "concept": [93, 98, 99], "glossari": [93, 99], "ye": 93, "augmentedpag": 93, "stationarytimeseriesgraph": 93, "stationarytimeseriesmixededgegraph": [93, 102], "stationarytimeseriescpdag": 93, "sure": 93, "past": 93, "moment": 93, "embodi": 93, "stationar": 93, "propag": 93, "set_stationar": 93, "modif": 93, "subtl": 93, "impact": 93, "mec": 93, "timeseriesmixededgegraph": 93, "light": 94, "quit": 94, "de": 94, "facto": 94, "offer": 94, "interpret": 94, "triangular": 94, "fill": 94, "against": [94, 95], "plan": 95, "yet": 95, "drop": 95, "roadmap": 95, "simultan": 95, "gaussin": 95, "child": 95, "affect": 95, "_parent": 95, "leftarrow": 95, "observed_par": 95, "arbitrarili": 95, "simul": [95, 99], "determinist": 95, "stochast": 95, "inher": 95, "natur": 95, "univari": 95, "presum": 95, "parent_1": 95, "parent_2": 95, "treatment": 95, "intervention_funct": 95, "domain_parent_funct": 95, "domain_exogenous_distribut": 95, "smallest": 95, "again": 95, "respect": 95, "unalter": 95, "But": 95, "mathbb": 95, "sample_from_graph": 95, "instanti": 95, "dure": 95, "intricaci": 95, "apriori": 95, "pa_x": 95, "noisi": 95, "hyperparamet": 95, "overridden": 95, "nest": 95, "citat": 95, "FOR": 95, "sel": 95, "ones": 95, "extra": 95, "invariant_domain": 95, "domain_gaussian_noise_funct": 95, "faith": 96, "07": 97, "479": 97, "everyth": 98, "multidomain": [99, 102], "semi_directed_path": 99, "all_semi_directed_path": 99, "is_semi_directed_path": 99, "export": [99, 102], "java": 99, "enhanc": [100, 101, 102, 103], "tip": 100, "subscrib": 100, "notifi": 100, "aryan": [102, 103], "roi": [102, 103], "71": 102, "minimal_m_separ": 102, "bf": 102, "jaron": 102, "lee": 102, "53": 102, "balltre": 102, "48": 102, "46": 102, "uncovered_pd_path": 102, "42": 102, "adam": [102, 103], "li": [102, 103], "possible_ancestor": 102, "possible_descend": 102, "discriminating_path": 102, "pds_path": 102, "acyclif": 102, "julien": 102, "siebert": 102, "26": 102, "29": 102, "49": 102, "causallearn": 102, "51": 102, "60": 102, "anank": 102, "63": 102, "commit": 102, "hook": 102, "75": 102, "make_graph_multidomain": 102, "77": 102, "78": 102, "82": 102, "thank": [102, 103], "everyon": [102, 103], "mainten": [102, 103], "incept": [102, 103], "91": 103, "96": 103, "93": 103, "99": 103, "suit": 103, "101": 103, "pdag_to_cpdag": 103, "pdag_to_dag": 103, "dag_to_cpdag": 103, "102": 103, "setup": 103, "110": 103, "proper": 103, "112": 103}, "objects": {"": [[0, 0, 0, "-", "pywhy_graphs"]], "pywhy_graphs": [[15, 1, 1, "", "ADMG"], [16, 1, 1, "", "AugmentedGraph"], [17, 1, 1, "", "AugmentedPAG"], [18, 1, 1, "", "CPDAG"], [19, 1, 1, "", "PAG"], [92, 0, 0, "-", "algorithms"], [93, 0, 0, "-", "classes"], [94, 0, 0, "-", "export"], [95, 0, 0, "-", "functional"], [96, 0, 0, "-", "simulate"], [86, 4, 1, "", "sys_info"]], "pywhy_graphs.ADMG": [[15, 2, 1, "", "bidirected_edge_name"], [15, 2, 1, "", "bidirected_edges"], [15, 3, 1, "", "c_components"], [15, 2, 1, "", "directed_edge_name"], [15, 2, 1, "", "directed_edges"], [15, 3, 1, "", "sub_bidirected_graph"], [15, 3, 1, "", "sub_directed_graph"], [15, 3, 1, "", "sub_undirected_graph"], [15, 2, 1, "", "undirected_edge_name"], [15, 2, 1, "", "undirected_edges"]], "pywhy_graphs.CPDAG": [[18, 3, 1, "", "add_edge"], [18, 3, 1, "", "add_edges_from"], [18, 2, 1, "", "directed_edge_name"], [18, 2, 1, "", "directed_edges"], [18, 3, 1, "", "orient_uncertain_edge"], [18, 3, 1, "", "possible_children"], [18, 3, 1, "", "possible_parents"], [18, 3, 1, "", "sub_directed_graph"], [18, 3, 1, "", "sub_undirected_graph"], [18, 2, 1, "", "undirected_edge_name"], [18, 2, 1, "", "undirected_edges"]], "pywhy_graphs.PAG": [[19, 3, 1, "", "add_edge"], [19, 3, 1, "", "add_edges_from"], [19, 3, 1, "", "children"], [19, 2, 1, "", "circle_edge_name"], [19, 2, 1, "", "circle_edges"], [19, 3, 1, "", "orient_uncertain_edge"], [19, 3, 1, "", "parents"], [19, 3, 1, "", "possible_children"], [19, 3, 1, "", "possible_parents"], [19, 3, 1, "", "sub_circle_graph"]], "pywhy_graphs.algorithms": [[20, 4, 1, "", "acyclification"], [21, 4, 1, "", "add_all_snode_combinations"], [22, 4, 1, "", "all_semi_directed_paths"], [23, 4, 1, "", "check_pag_definition"], [24, 4, 1, "", "compute_invariant_domains_per_node"], [25, 4, 1, "", "dag_to_cpdag"], [26, 4, 1, "", "dag_to_mag"], [27, 4, 1, "", "discriminating_path"], [28, 4, 1, "", "find_connected_pairs"], [29, 4, 1, "", "has_adc"], [30, 4, 1, "", "inducing_path"], [31, 4, 1, "", "is_definite_noncollider"], [32, 4, 1, "", "is_semi_directed_path"], [33, 4, 1, "", "is_valid_mec_graph"], [34, 4, 1, "", "label_edges"], [35, 4, 1, "", "mag_to_pag"], [36, 4, 1, "", "order_edges"], [37, 4, 1, "", "pag_to_mag"], [38, 4, 1, "", "pdag_to_cpdag"], [39, 4, 1, "", "pdag_to_dag"], [40, 4, 1, "", "pds"], [41, 4, 1, "", "pds_path"], [42, 4, 1, "", "pds_t"], [43, 4, 1, "", "pds_t_path"], [44, 4, 1, "", "possible_ancestors"], [45, 4, 1, "", "possible_descendants"], [92, 0, 0, "-", "semi_directed_paths"], [48, 4, 1, "", "uncovered_pd_path"], [49, 4, 1, "", "valid_mag"], [50, 4, 1, "", "valid_pag"]], "pywhy_graphs.algorithms.semi_directed_paths": [[46, 4, 1, "", "all_semi_directed_paths"], [47, 4, 1, "", "is_semi_directed_path"]], "pywhy_graphs.classes": [[93, 0, 0, "-", "timeseries"]], "pywhy_graphs.classes.timeseries": [[51, 1, 1, "", "StationaryTimeSeriesCPDAG"], [52, 1, 1, "", "StationaryTimeSeriesDiGraph"], [53, 1, 1, "", "StationaryTimeSeriesGraph"], [54, 1, 1, "", "StationaryTimeSeriesMixedEdgeGraph"], [55, 1, 1, "", "StationaryTimeSeriesPAG"], [56, 1, 1, "", "TimeSeriesDiGraph"], [57, 1, 1, "", "TimeSeriesGraph"], [58, 1, 1, "", "TimeSeriesMixedEdgeGraph"], [59, 4, 1, "", "complete_ts_graph"], [60, 4, 1, "", "empty_ts_graph"], [61, 4, 1, "", "get_summary_graph"], [62, 4, 1, "", "has_homologous_edges"], [63, 4, 1, "", "nodes_in_time_order"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG": [[51, 3, 1, "", "add_edge"], [51, 3, 1, "", "add_edges_from"], [51, 2, 1, "", "directed_edge_name"], [51, 2, 1, "", "directed_edges"], [51, 3, 1, "", "orient_uncertain_edge"], [51, 3, 1, "", "possible_children"], [51, 3, 1, "", "possible_parents"], [51, 3, 1, "", "sub_directed_graph"], [51, 3, 1, "", "sub_undirected_graph"], [51, 2, 1, "", "undirected_edge_name"], [51, 2, 1, "", "undirected_edges"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG": [[55, 2, 1, "", "bidirected_edge_name"], [55, 2, 1, "", "bidirected_edges"], [55, 2, 1, "", "circle_edge_name"], [55, 2, 1, "", "circle_edges"], [55, 2, 1, "", "directed_edge_name"], [55, 2, 1, "", "directed_edges"], [55, 3, 1, "", "orient_uncertain_edge"], [55, 3, 1, "", "possible_children"], [55, 3, 1, "", "possible_parents"], [55, 3, 1, "", "sub_bidirected_graph"], [55, 3, 1, "", "sub_circle_graph"], [55, 3, 1, "", "sub_directed_graph"], [55, 3, 1, "", "sub_undirected_graph"], [55, 2, 1, "", "undirected_edge_name"], [55, 2, 1, "", "undirected_edges"]], "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph": [[58, 3, 1, "", "add_edge"], [58, 3, 1, "", "add_edges_from"], [58, 3, 1, "", "add_homologous_edges"], [58, 3, 1, "", "copy"], [58, 5, 1, "", "node_attr_dict_factory"], [58, 5, 1, "", "node_dict_factory"], [58, 3, 1, "", "remove_edge"], [58, 3, 1, "", "remove_edges_from"], [58, 3, 1, "", "remove_homologous_edges"]], "pywhy_graphs.export": [[64, 4, 1, "", "clearn_to_graph"], [65, 4, 1, "", "graph_to_clearn"], [66, 4, 1, "", "graph_to_numpy"], [67, 4, 1, "", "graph_to_pcalg"], [68, 4, 1, "", "graph_to_tetrad"], [69, 4, 1, "", "numpy_to_graph"], [70, 4, 1, "", "pcalg_to_graph"], [71, 4, 1, "", "tetrad_to_graph"]], "pywhy_graphs.functional": [[72, 4, 1, "", "apply_linear_soft_intervention"], [75, 4, 1, "", "make_graph_linear_gaussian"], [76, 4, 1, "", "make_graph_multidomain"], [77, 4, 1, "", "set_node_attributes_with_G"]], "pywhy_graphs.functional.discrete": [[73, 4, 1, "", "add_cpd_for_node"], [74, 4, 1, "", "make_random_discrete_graph"]], "pywhy_graphs.networkx": [[78, 1, 1, "", "MixedEdgeGraph"], [79, 4, 1, "", "bidirected_to_unobserved_confounder"], [80, 4, 1, "", "is_minimal_m_separator"], [81, 4, 1, "", "m_separated"], [82, 4, 1, "", "minimal_m_separator"]], "pywhy_graphs.networkx.MixedEdgeGraph": [[78, 3, 1, "", "__contains__"], [78, 3, 1, "", "__getitem__"], [78, 3, 1, "", "__iter__"], [78, 3, 1, "", "__len__"], [78, 3, 1, "", "add_edge"], [78, 3, 1, "", "add_edges_from"], [78, 2, 1, "", "adj"], [78, 3, 1, "", "clear_edge_types"], [78, 3, 1, "", "copy"], [78, 3, 1, "", "degree"], [78, 3, 1, "", "edges"], [78, 3, 1, "", "get_edge_data"], [78, 3, 1, "", "get_graphs"], [78, 5, 1, "", "graph_attr_dict_factory"], [78, 3, 1, "", "has_edge"], [78, 3, 1, "", "has_node"], [78, 3, 1, "", "is_directed"], [78, 3, 1, "", "is_multigraph"], [78, 2, 1, "", "name"], [78, 3, 1, "", "nbunch_iter"], [78, 5, 1, "", "node_attr_dict_factory"], [78, 5, 1, "", "node_dict_factory"], [78, 3, 1, "", "number_of_edge_types"], [78, 3, 1, "", "number_of_edges"], [78, 3, 1, "", "number_of_nodes"], [78, 3, 1, "", "order"], [78, 3, 1, "", "remove_edge"], [78, 3, 1, "", "remove_edges_from"], [78, 3, 1, "", "size"], [78, 3, 1, "", "subgraph"], [78, 3, 1, "", "to_directed"], [78, 3, 1, "", "to_undirected"], [78, 3, 1, "", "update"]], "pywhy_graphs.simulate": [[83, 4, 1, "", "simulate_data_from_var"], [84, 4, 1, "", "simulate_linear_var_process"], [85, 4, 1, "", "simulate_var_process_from_summary_graph"]], "pywhy_graphs.viz": [[87, 4, 1, "", "draw"], [88, 4, 1, "", "timeseries_layout"]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:property", "3": "py:method", "4": "py:function", "5": "py:attribute"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "property", "Python property"], "3": ["py", "method", "Python method"], "4": ["py", "function", "Python function"], "5": ["py", "attribute", "Python attribute"]}, "titleterms": {"api": [0, 89, 90], "pywhy_graph": [0, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 93, 96], "class": [0, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 92, 93], "causal": [0, 1, 3, 5, 12, 92, 93, 94, 95, 96, 98], "graph": [0, 1, 2, 3, 4, 5, 8, 11, 12, 13, 90, 92, 93, 94, 95, 98], "algorithm": [0, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 92], "mix": [0, 5, 8], "edg": [0, 8], "deal": 0, "cpdag": [0, 5, 18], "convers": 0, "between": [0, 4], "other": 0, "packag": [0, 94], "": [0, 95, 102, 103], "networkx": [0, 1, 7, 78, 79, 80, 81, 82, 90, 98], "experiment": [0, 94], "function": [0, 72, 73, 74, 75, 76, 77, 95], "timeseri": [0, 13, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 93], "simul": [0, 5, 83, 84, 85, 96], "graphic": [0, 95, 96], "model": [0, 5, 95, 96], "convert": 0, "visual": [0, 1, 11, 12, 98], "util": 0, "debug": 0, "exampl": [1, 4, 7, 15, 18, 19, 56, 78, 81, 87, 88, 98], "galleri": [1, 98], "mixededgegraph": [1, 7, 8, 78, 98], "introduct": [1, 3, 4, 5, 98], "On": 2, "pag": [2, 5, 19], "valid": 2, "pywhi": [2, 90, 92, 93, 94, 98], "refer": [2, 4, 5], "an": [4, 5], "induc": 4, "path": [4, 92], "how": [4, 5, 90, 98], "find": 4, "them": [4, 5], "construct": [4, 8], "adjac": 4, "node": [4, 8, 95], "trivial": 4, "have": 4, "non": 4, "The": 4, "role": 4, "collid": 4, "us": [5, 15, 18, 19, 56, 78, 81, 87, 88, 93, 98], "structur": 5, "some": 5, "data": 5, "direct": [5, 92], "ayclic": 5, "dag": 5, "also": 5, "known": 5, "bayesian": 5, "network": 5, "acycl": [5, 92], "admg": [5, 15], "complet": 5, "partial": 5, "ancestr": 5, "comput": [6, 9, 10, 14, 97], "time": [6, 9, 10, 14, 92, 93, 97], "differ": 8, "type": [8, 93], "properti": 8, "oper": 8, "kei": 8, "draw": [11, 13, 87], "set": [11, 13], "layout": [11, 13], "comparison": 11, "augmentedgraph": 16, "augmentedpag": 17, "acyclif": 20, "add_all_snode_combin": 21, "all_semi_directed_path": [22, 46], "check_pag_definit": 23, "compute_invariant_domains_per_nod": 24, "dag_to_cpdag": 25, "dag_to_mag": 26, "discriminating_path": 27, "find_connected_pair": 28, "has_adc": 29, "inducing_path": 30, "is_definite_noncollid": 31, "is_semi_directed_path": [32, 47], "is_valid_mec_graph": 33, "label_edg": 34, "mag_to_pag": 35, "order_edg": 36, "pag_to_mag": 37, "pdag_to_cpdag": 38, "pdag_to_dag": 39, "pd": 40, "pds_path": 41, "pds_t": 42, "pds_t_path": 43, "possible_ancestor": 44, "possible_descend": 45, "semi_directed_path": [46, 47], "uncovered_pd_path": 48, "valid_mag": 49, "valid_pag": 50, "stationarytimeseriescpdag": 51, "stationarytimeseriesdigraph": 52, "stationarytimeseriesgraph": 53, "stationarytimeseriesmixededgegraph": 54, "stationarytimeseriespag": 55, "timeseriesdigraph": 56, "timeseriesgraph": 57, "timeseriesmixededgegraph": 58, "complete_ts_graph": 59, "empty_ts_graph": 60, "get_summary_graph": 61, "has_homologous_edg": 62, "nodes_in_time_ord": 63, "export": [64, 65, 66, 67, 68, 69, 70, 71, 94], "clearn_to_graph": 64, "graph_to_clearn": 65, "graph_to_numpi": 66, "graph_to_pcalg": 67, "graph_to_tetrad": 68, "numpy_to_graph": 69, "pcalg_to_graph": 70, "tetrad_to_graph": 71, "apply_linear_soft_intervent": 72, "discret": [73, 74, 95], "add_cpd_for_nod": 73, "make_random_discrete_graph": 74, "make_graph_linear_gaussian": 75, "make_graph_multidomain": 76, "set_node_attributes_with_g": 77, "bidirected_to_unobserved_confound": 79, "is_minimal_m_separ": 80, "m_separ": 81, "minimal_m_separ": 82, "simulate_data_from_var": 83, "simulate_linear_var_process": 84, "simulate_var_process_from_summary_graph": 85, "sys_info": 86, "viz": [87, 88], "timeseries_layout": 88, "glossari": 89, "common": 89, "term": 89, "element": 89, "gener": 89, "concept": 89, "stabil": 90, "do": 90, "we": 90, "compar": 90, "content": 90, "get": 90, "start": 90, "team": 90, "indic": 90, "tabl": 90, "instal": 91, "pip": 91, "from": [91, 94, 95], "sourc": 91, "core": 92, "markov": 92, "equival": 92, "seri": [92, 93], "handl": 92, "semi": 92, "possibli": 92, "which": 93, "should": 93, "i": 93, "alpha": 93, "import": 94, "anoth": 94, "learn": 94, "numpi": 94, "graphviz": 94, "dagitti": 94, "pcalg": 94, "r": 94, "tetrad": 94, "java": 94, "repres": 95, "relationship": 95, "multipl": 95, "distribut": 95, "intervent": 95, "domain": 95, "shift": 95, "sampl": 95, "limit": 95, "specif": 95, "linear": 95, "multidomain": 95, "select": 95, "diagram": 95, "modul": 96, "tutori": 98, "user": 99, "guid": 99, "releas": 100, "histori": 100, "what": [102, 103], "new": [102, 103], "version": [102, 103], "0": [102, 103], "1": 102, "changelog": [102, 103], "code": [102, 103], "document": [102, 103], "contributor": [102, 103], "2": 103}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx.ext.viewcode": 1, "nbsphinx": 4, "sphinxcontrib.bibtex": 9, "sphinx": 60}, "alltitles": {"API": [[0, "api"]], "pywhy_graphs.classes: Causal graph classes": [[0, "pywhy-graphs-classes-causal-graph-classes"]], "pywhy_graphs.algorithms: Algorithms for Mixed-Edge Graphs": [[0, "pywhy-graphs-algorithms-algorithms-for-mixed-edge-graphs"]], "pywhy_graphs.algorithms: Algorithms for dealing with CPDAGs": [[0, "pywhy-graphs-algorithms-algorithms-for-dealing-with-cpdags"]], "Conversions between other package\u2019s causal graphs": [[0, "conversions-between-other-package-s-causal-graphs"]], "NetworkX Experimental Functionality": [[0, "networkx-experimental-functionality"]], "pywhy_graphs.classes.timeseries: Timeseries": [[0, "pywhy-graphs-classes-timeseries-timeseries"]], "pywhy_graphs.simulate: Causal graphical model simulations": [[0, "pywhy-graphs-simulate-causal-graphical-model-simulations"], [96, "pywhy-graphs-simulate-causal-graphical-model-simulations"]], "Converting graphs to functional models": [[0, "converting-graphs-to-functional-models"]], "Visualization of causal graphs": [[0, "visualization-of-causal-graphs"], [1, "visualization-of-causal-graphs"], [12, "visualization-of-causal-graphs"], [98, "visualization-of-causal-graphs"]], "Utilities for debugging": [[0, "utilities-for-debugging"]], "Simulation": [[0, "simulation"]], "Examples Gallery": [[1, "examples-gallery"], [98, "examples-gallery"]], "Networkx MixedEdgeGraph Examples": [[1, "networkx-mixededgegraph-examples"], [7, "networkx-mixededgegraph-examples"], [98, "networkx-mixededgegraph-examples"]], "Introduction to causal graphs": [[1, "introduction-to-causal-graphs"], [3, "introduction-to-causal-graphs"], [98, "introduction-to-causal-graphs"]], "On PAGs and their validity": [[2, "on-pags-and-their-validity"]], "PAGs in pywhy-graphs": [[2, "pags-in-pywhy-graphs"]], "Validity of a PAG": [[2, "validity-of-a-pag"]], "References": [[2, "references"], [4, "references"], [5, "references"]], "An introduction to Inducing Paths and how to find them": [[4, "an-introduction-to-inducing-paths-and-how-to-find-them"]], "Construct an example graph": [[4, "construct-an-example-graph"]], "Adjacent nodes trivially have an inducing path": [[4, "adjacent-nodes-trivially-have-an-inducing-path"]], "Inducing paths between non-adjacent nodes": [[4, "inducing-paths-between-non-adjacent-nodes"]], "The role of colliders": [[4, "the-role-of-colliders"]], "An introduction to causal graphs and how to use them": [[5, "an-introduction-to-causal-graphs-and-how-to-use-them"]], "Structural Causal Models: Simulating some data": [[5, "structural-causal-models-simulating-some-data"]], "Causal Directed Ayclic Graphs (DAG): Also known as Causal Bayesian Networks": [[5, "causal-directed-ayclic-graphs-dag-also-known-as-causal-bayesian-networks"]], "Acyclic Directed Mixed Graphs (ADMG)": [[5, "acyclic-directed-mixed-graphs-admg"]], "Completed Partially Directed Ayclic Graph (CPDAG)": [[5, "completed-partially-directed-ayclic-graph-cpdag"]], "Partial Ancestral Graph (PAG)": [[5, "partial-ancestral-graph-pag"]], "Computation times": [[6, "computation-times"], [9, "computation-times"], [10, "computation-times"], [14, "computation-times"], [97, "computation-times"]], "MixedEdgeGraph - Graph with different types of edges": [[8, "mixededgegraph-graph-with-different-types-of-edges"]], "Construct a MixedEdgeGraph": [[8, "construct-a-mixededgegraph"]], "Mixed Edge Graph Properties": [[8, "mixed-edge-graph-properties"]], "Mixed Edge Graph Operations on Nodes": [[8, "mixed-edge-graph-operations-on-nodes"]], "Mixed Edge Graph Operations on Edges": [[8, "mixed-edge-graph-operations-on-edges"]], "Mixed Edge Graph Key Differences": [[8, "mixed-edge-graph-key-differences"]], "Drawing graphs and setting their layout for visual comparison": [[11, "drawing-graphs-and-setting-their-layout-for-visual-comparison"]], "Drawing timeseries graphs and setting their layout": [[13, "drawing-timeseries-graphs-and-setting-their-layout"]], "pywhy_graphs.ADMG": [[15, "pywhy-graphs-admg"]], "Examples using pywhy_graphs.ADMG": [[15, "examples-using-pywhy-graphs-admg"]], "pywhy_graphs.AugmentedGraph": [[16, "pywhy-graphs-augmentedgraph"]], "pywhy_graphs.AugmentedPAG": [[17, "pywhy-graphs-augmentedpag"]], "pywhy_graphs.CPDAG": [[18, "pywhy-graphs-cpdag"]], "Examples using pywhy_graphs.CPDAG": [[18, "examples-using-pywhy-graphs-cpdag"]], "pywhy_graphs.PAG": [[19, "pywhy-graphs-pag"]], "Examples using pywhy_graphs.PAG": [[19, "examples-using-pywhy-graphs-pag"]], "pywhy_graphs.algorithms.acyclification": [[20, "pywhy-graphs-algorithms-acyclification"]], "pywhy_graphs.algorithms.add_all_snode_combinations": [[21, "pywhy-graphs-algorithms-add-all-snode-combinations"]], "pywhy_graphs.algorithms.all_semi_directed_paths": [[22, "pywhy-graphs-algorithms-all-semi-directed-paths"]], "pywhy_graphs.algorithms.check_pag_definition": [[23, "pywhy-graphs-algorithms-check-pag-definition"]], "pywhy_graphs.algorithms.compute_invariant_domains_per_node": [[24, "pywhy-graphs-algorithms-compute-invariant-domains-per-node"]], "pywhy_graphs.algorithms.dag_to_cpdag": [[25, "pywhy-graphs-algorithms-dag-to-cpdag"]], "pywhy_graphs.algorithms.dag_to_mag": [[26, "pywhy-graphs-algorithms-dag-to-mag"]], "pywhy_graphs.algorithms.discriminating_path": [[27, "pywhy-graphs-algorithms-discriminating-path"]], "pywhy_graphs.algorithms.find_connected_pairs": [[28, "pywhy-graphs-algorithms-find-connected-pairs"]], "pywhy_graphs.algorithms.has_adc": [[29, "pywhy-graphs-algorithms-has-adc"]], "pywhy_graphs.algorithms.inducing_path": [[30, "pywhy-graphs-algorithms-inducing-path"]], "pywhy_graphs.algorithms.is_definite_noncollider": [[31, "pywhy-graphs-algorithms-is-definite-noncollider"]], "pywhy_graphs.algorithms.is_semi_directed_path": [[32, "pywhy-graphs-algorithms-is-semi-directed-path"]], "pywhy_graphs.algorithms.is_valid_mec_graph": [[33, "pywhy-graphs-algorithms-is-valid-mec-graph"]], "pywhy_graphs.algorithms.label_edges": [[34, "pywhy-graphs-algorithms-label-edges"]], "pywhy_graphs.algorithms.mag_to_pag": [[35, "pywhy-graphs-algorithms-mag-to-pag"]], "pywhy_graphs.algorithms.order_edges": [[36, "pywhy-graphs-algorithms-order-edges"]], "pywhy_graphs.algorithms.pag_to_mag": [[37, "pywhy-graphs-algorithms-pag-to-mag"]], "pywhy_graphs.algorithms.pdag_to_cpdag": [[38, "pywhy-graphs-algorithms-pdag-to-cpdag"]], "pywhy_graphs.algorithms.pdag_to_dag": [[39, "pywhy-graphs-algorithms-pdag-to-dag"]], "pywhy_graphs.algorithms.pds": [[40, "pywhy-graphs-algorithms-pds"]], "pywhy_graphs.algorithms.pds_path": [[41, "pywhy-graphs-algorithms-pds-path"]], "pywhy_graphs.algorithms.pds_t": [[42, "pywhy-graphs-algorithms-pds-t"]], "pywhy_graphs.algorithms.pds_t_path": [[43, "pywhy-graphs-algorithms-pds-t-path"]], "pywhy_graphs.algorithms.possible_ancestors": [[44, "pywhy-graphs-algorithms-possible-ancestors"]], "pywhy_graphs.algorithms.possible_descendants": [[45, "pywhy-graphs-algorithms-possible-descendants"]], "pywhy_graphs.algorithms.semi_directed_paths.all_semi_directed_paths": [[46, "pywhy-graphs-algorithms-semi-directed-paths-all-semi-directed-paths"]], "pywhy_graphs.algorithms.semi_directed_paths.is_semi_directed_path": [[47, "pywhy-graphs-algorithms-semi-directed-paths-is-semi-directed-path"]], "pywhy_graphs.algorithms.uncovered_pd_path": [[48, "pywhy-graphs-algorithms-uncovered-pd-path"]], "pywhy_graphs.algorithms.valid_mag": [[49, "pywhy-graphs-algorithms-valid-mag"]], "pywhy_graphs.algorithms.valid_pag": [[50, "pywhy-graphs-algorithms-valid-pag"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG": [[51, "pywhy-graphs-classes-timeseries-stationarytimeseriescpdag"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesDiGraph": [[52, "pywhy-graphs-classes-timeseries-stationarytimeseriesdigraph"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesGraph": [[53, "pywhy-graphs-classes-timeseries-stationarytimeseriesgraph"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesMixedEdgeGraph": [[54, "pywhy-graphs-classes-timeseries-stationarytimeseriesmixededgegraph"]], "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG": [[55, "pywhy-graphs-classes-timeseries-stationarytimeseriespag"]], "pywhy_graphs.classes.timeseries.TimeSeriesDiGraph": [[56, "pywhy-graphs-classes-timeseries-timeseriesdigraph"]], "Examples using pywhy_graphs.classes.timeseries.TimeSeriesDiGraph": [[56, "examples-using-pywhy-graphs-classes-timeseries-timeseriesdigraph"]], "pywhy_graphs.classes.timeseries.TimeSeriesGraph": [[57, "pywhy-graphs-classes-timeseries-timeseriesgraph"]], "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph": [[58, "pywhy-graphs-classes-timeseries-timeseriesmixededgegraph"]], "pywhy_graphs.classes.timeseries.complete_ts_graph": [[59, "pywhy-graphs-classes-timeseries-complete-ts-graph"]], "pywhy_graphs.classes.timeseries.empty_ts_graph": [[60, "pywhy-graphs-classes-timeseries-empty-ts-graph"]], "pywhy_graphs.classes.timeseries.get_summary_graph": [[61, "pywhy-graphs-classes-timeseries-get-summary-graph"]], "pywhy_graphs.classes.timeseries.has_homologous_edges": [[62, "pywhy-graphs-classes-timeseries-has-homologous-edges"]], "pywhy_graphs.classes.timeseries.nodes_in_time_order": [[63, "pywhy-graphs-classes-timeseries-nodes-in-time-order"]], "pywhy_graphs.export.clearn_to_graph": [[64, "pywhy-graphs-export-clearn-to-graph"]], "pywhy_graphs.export.graph_to_clearn": [[65, "pywhy-graphs-export-graph-to-clearn"]], "pywhy_graphs.export.graph_to_numpy": [[66, "pywhy-graphs-export-graph-to-numpy"]], "pywhy_graphs.export.graph_to_pcalg": [[67, "pywhy-graphs-export-graph-to-pcalg"]], "pywhy_graphs.export.graph_to_tetrad": [[68, "pywhy-graphs-export-graph-to-tetrad"]], "pywhy_graphs.export.numpy_to_graph": [[69, "pywhy-graphs-export-numpy-to-graph"]], "pywhy_graphs.export.pcalg_to_graph": [[70, "pywhy-graphs-export-pcalg-to-graph"]], "pywhy_graphs.export.tetrad_to_graph": [[71, "pywhy-graphs-export-tetrad-to-graph"]], "pywhy_graphs.functional.apply_linear_soft_intervention": [[72, "pywhy-graphs-functional-apply-linear-soft-intervention"]], "pywhy_graphs.functional.discrete.add_cpd_for_node": [[73, "pywhy-graphs-functional-discrete-add-cpd-for-node"]], "pywhy_graphs.functional.discrete.make_random_discrete_graph": [[74, "pywhy-graphs-functional-discrete-make-random-discrete-graph"]], "pywhy_graphs.functional.make_graph_linear_gaussian": [[75, "pywhy-graphs-functional-make-graph-linear-gaussian"]], "pywhy_graphs.functional.make_graph_multidomain": [[76, "pywhy-graphs-functional-make-graph-multidomain"]], "pywhy_graphs.functional.set_node_attributes_with_G": [[77, "pywhy-graphs-functional-set-node-attributes-with-g"]], "pywhy_graphs.networkx.MixedEdgeGraph": [[78, "pywhy-graphs-networkx-mixededgegraph"]], "Examples using pywhy_graphs.networkx.MixedEdgeGraph": [[78, "examples-using-pywhy-graphs-networkx-mixededgegraph"]], "pywhy_graphs.networkx.bidirected_to_unobserved_confounder": [[79, "pywhy-graphs-networkx-bidirected-to-unobserved-confounder"]], "pywhy_graphs.networkx.is_minimal_m_separator": [[80, "pywhy-graphs-networkx-is-minimal-m-separator"]], "pywhy_graphs.networkx.m_separated": [[81, "pywhy-graphs-networkx-m-separated"]], "Examples using pywhy_graphs.networkx.m_separated": [[81, "examples-using-pywhy-graphs-networkx-m-separated"]], "pywhy_graphs.networkx.minimal_m_separator": [[82, "pywhy-graphs-networkx-minimal-m-separator"]], "pywhy_graphs.simulate.simulate_data_from_var": [[83, "pywhy-graphs-simulate-simulate-data-from-var"]], "pywhy_graphs.simulate.simulate_linear_var_process": [[84, "pywhy-graphs-simulate-simulate-linear-var-process"]], "pywhy_graphs.simulate.simulate_var_process_from_summary_graph": [[85, "pywhy-graphs-simulate-simulate-var-process-from-summary-graph"]], "pywhy_graphs.sys_info": [[86, "pywhy-graphs-sys-info"]], "pywhy_graphs.viz.draw": [[87, "pywhy-graphs-viz-draw"]], "Examples using pywhy_graphs.viz.draw": [[87, "examples-using-pywhy-graphs-viz-draw"]], "pywhy_graphs.viz.timeseries_layout": [[88, "pywhy-graphs-viz-timeseries-layout"]], "Examples using pywhy_graphs.viz.timeseries_layout": [[88, "examples-using-pywhy-graphs-viz-timeseries-layout"]], "Glossary of Common Terms and API Elements": [[89, "glossary-of-common-terms-and-api-elements"]], "General Concepts": [[89, "general-concepts"]], "pywhy-graphs": [[90, "pywhy-graphs"]], "API Stability": [[90, "api-stability"]], "How do we compare with NetworkX?": [[90, "how-do-we-compare-with-networkx"]], "Contents": [[90, "contents"]], "Getting started:": [[90, null]], "Team": [[90, "team"]], "Indices and tables": [[90, "indices-and-tables"]], "Installation": [[91, "installation"]], "Installing with pip": [[91, "installing-with-pip"]], "Installing from source": [[91, "installing-from-source"]], "Causal Graph Algorithms in PyWhy": [[92, "module-pywhy_graphs.algorithms"]], "Core Algorithms": [[92, "core-algorithms"]], "Algorithms for Markov Equivalence Classes": [[92, "algorithms-for-markov-equivalence-classes"]], "Algorithms for Time-Series Graphs": [[92, "algorithms-for-time-series-graphs"]], "Algorithms for handling acyclicity": [[92, "algorithms-for-handling-acyclicity"]], "Semi-directed (possibly-directed) Paths": [[92, "module-pywhy_graphs.algorithms.semi_directed_paths"]], "Causal Graphs in PyWhy": [[93, "module-pywhy_graphs.classes"]], "Which graph class should I use?": [[93, "which-graph-class-should-i-use"]], "pywhy_graphs.classes: Causal graph types": [[93, "pywhy-graphs-classes-causal-graph-types"]], "pywhy_graphs.classes.timeseries: Causal graph types for time-series (alpha)": [[93, "module-pywhy_graphs.classes.timeseries"]], "Importing causal graphs to PyWhy-Graphs, or exporting PyWhy-Graphs to another package": [[94, "module-pywhy_graphs.export"]], "Causal-Learn": [[94, "causal-learn"]], "Numpy (graphviz and dagitty)": [[94, "numpy-graphviz-and-dagitty"]], "PCAlg from R (Experimental)": [[94, "pcalg-from-r-experimental"]], "Tetrad from Java": [[94, "tetrad-from-java"]], "Functional Causal Graphical Models": [[95, "module-pywhy_graphs.functional"]], "Representing a node\u2019s functional relationships": [[95, "representing-a-node-s-functional-relationships"]], "Multiple Distributions: Interventions and Domain Shifts": [[95, "multiple-distributions-interventions-and-domain-shifts"]], "Sampling from the graph": [[95, "sampling-from-the-graph"]], "Limitations": [[95, "limitations"]], "Specific Functional Graphs": [[95, "specific-functional-graphs"]], "Discrete functional graphs": [[95, "discrete-functional-graphs"]], "Linear": [[95, "linear"], [95, "id4"]], "Linear functional graphs": [[95, "linear-functional-graphs"]], "Multidomain": [[95, "multidomain"]], "Linear functional selection diagrams": [[95, "linear-functional-selection-diagrams"]], "Simulation module": [[96, "simulation-module"]], "How to use pywhy-graphs with examples and tutorials": [[98, "how-to-use-pywhy-graphs-with-examples-and-tutorials"]], "User Guide": [[99, "user-guide"]], "Release History": [[100, "release-history"]], "What\u2019s new?": [[102, "what-s-new"], [103, "what-s-new"]], "Version 0.1": [[102, "version-0-1"]], "Changelog": [[102, "changelog"], [103, "changelog"]], "Code and Documentation Contributors": [[102, "code-and-documentation-contributors"], [103, "code-and-documentation-contributors"]], "Version 0.2": [[103, "version-0-2"]]}, "indexentries": {"module": [[0, "module-pywhy_graphs"], [92, "module-pywhy_graphs.algorithms"], [92, "module-pywhy_graphs.algorithms.semi_directed_paths"], [93, "module-pywhy_graphs.classes"], [93, "module-pywhy_graphs.classes.timeseries"], [94, "module-pywhy_graphs.export"], [95, "module-pywhy_graphs.functional"], [96, "module-pywhy_graphs.simulate"]], "pywhy_graphs": [[0, "module-pywhy_graphs"]], "admg (class in pywhy_graphs)": [[15, "pywhy_graphs.ADMG"]], "bidirected_edge_name (pywhy_graphs.admg property)": [[15, "pywhy_graphs.ADMG.bidirected_edge_name"]], "bidirected_edges (pywhy_graphs.admg property)": [[15, "pywhy_graphs.ADMG.bidirected_edges"]], "c_components() (pywhy_graphs.admg method)": [[15, "pywhy_graphs.ADMG.c_components"]], "directed_edge_name (pywhy_graphs.admg property)": [[15, "pywhy_graphs.ADMG.directed_edge_name"]], "directed_edges (pywhy_graphs.admg property)": [[15, "pywhy_graphs.ADMG.directed_edges"]], "sub_bidirected_graph() (pywhy_graphs.admg method)": [[15, "pywhy_graphs.ADMG.sub_bidirected_graph"]], "sub_directed_graph() (pywhy_graphs.admg method)": [[15, "pywhy_graphs.ADMG.sub_directed_graph"]], "sub_undirected_graph() (pywhy_graphs.admg method)": [[15, "pywhy_graphs.ADMG.sub_undirected_graph"]], "undirected_edge_name (pywhy_graphs.admg property)": [[15, "pywhy_graphs.ADMG.undirected_edge_name"]], "undirected_edges (pywhy_graphs.admg property)": [[15, "pywhy_graphs.ADMG.undirected_edges"]], "augmentedgraph (class in pywhy_graphs)": [[16, "pywhy_graphs.AugmentedGraph"]], "augmentedpag (class in pywhy_graphs)": [[17, "pywhy_graphs.AugmentedPAG"]], "cpdag (class in pywhy_graphs)": [[18, "pywhy_graphs.CPDAG"]], "add_edge() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.add_edge"]], "add_edges_from() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.add_edges_from"]], "directed_edge_name (pywhy_graphs.cpdag property)": [[18, "pywhy_graphs.CPDAG.directed_edge_name"]], "directed_edges (pywhy_graphs.cpdag property)": [[18, "pywhy_graphs.CPDAG.directed_edges"]], "orient_uncertain_edge() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.orient_uncertain_edge"]], "possible_children() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.possible_children"]], "possible_parents() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.possible_parents"]], "sub_directed_graph() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.sub_directed_graph"]], "sub_undirected_graph() (pywhy_graphs.cpdag method)": [[18, "pywhy_graphs.CPDAG.sub_undirected_graph"]], "undirected_edge_name (pywhy_graphs.cpdag property)": [[18, "pywhy_graphs.CPDAG.undirected_edge_name"]], "undirected_edges (pywhy_graphs.cpdag property)": [[18, "pywhy_graphs.CPDAG.undirected_edges"]], "pag (class in pywhy_graphs)": [[19, "pywhy_graphs.PAG"]], "add_edge() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.add_edge"]], "add_edges_from() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.add_edges_from"]], "children() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.children"]], "circle_edge_name (pywhy_graphs.pag property)": [[19, "pywhy_graphs.PAG.circle_edge_name"]], "circle_edges (pywhy_graphs.pag property)": [[19, "pywhy_graphs.PAG.circle_edges"]], "orient_uncertain_edge() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.orient_uncertain_edge"]], "parents() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.parents"]], "possible_children() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.possible_children"]], "possible_parents() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.possible_parents"]], "sub_circle_graph() (pywhy_graphs.pag method)": [[19, "pywhy_graphs.PAG.sub_circle_graph"]], "acyclification() (in module pywhy_graphs.algorithms)": [[20, "pywhy_graphs.algorithms.acyclification"]], "add_all_snode_combinations() (in module pywhy_graphs.algorithms)": [[21, "pywhy_graphs.algorithms.add_all_snode_combinations"]], "all_semi_directed_paths() (in module pywhy_graphs.algorithms)": [[22, "pywhy_graphs.algorithms.all_semi_directed_paths"]], "check_pag_definition() (in module pywhy_graphs.algorithms)": [[23, "pywhy_graphs.algorithms.check_pag_definition"]], "compute_invariant_domains_per_node() (in module pywhy_graphs.algorithms)": [[24, "pywhy_graphs.algorithms.compute_invariant_domains_per_node"]], "dag_to_cpdag() (in module pywhy_graphs.algorithms)": [[25, "pywhy_graphs.algorithms.dag_to_cpdag"]], "dag_to_mag() (in module pywhy_graphs.algorithms)": [[26, "pywhy_graphs.algorithms.dag_to_mag"]], "discriminating_path() (in module pywhy_graphs.algorithms)": [[27, "pywhy_graphs.algorithms.discriminating_path"]], "find_connected_pairs() (in module pywhy_graphs.algorithms)": [[28, "pywhy_graphs.algorithms.find_connected_pairs"]], "has_adc() (in module pywhy_graphs.algorithms)": [[29, "pywhy_graphs.algorithms.has_adc"]], "inducing_path() (in module pywhy_graphs.algorithms)": [[30, "pywhy_graphs.algorithms.inducing_path"]], "is_definite_noncollider() (in module pywhy_graphs.algorithms)": [[31, "pywhy_graphs.algorithms.is_definite_noncollider"]], "is_semi_directed_path() (in module pywhy_graphs.algorithms)": [[32, "pywhy_graphs.algorithms.is_semi_directed_path"]], "is_valid_mec_graph() (in module pywhy_graphs.algorithms)": [[33, "pywhy_graphs.algorithms.is_valid_mec_graph"]], "label_edges() (in module pywhy_graphs.algorithms)": [[34, "pywhy_graphs.algorithms.label_edges"]], "mag_to_pag() (in module pywhy_graphs.algorithms)": [[35, "pywhy_graphs.algorithms.mag_to_pag"]], "order_edges() (in module pywhy_graphs.algorithms)": [[36, "pywhy_graphs.algorithms.order_edges"]], "pag_to_mag() (in module pywhy_graphs.algorithms)": [[37, "pywhy_graphs.algorithms.pag_to_mag"]], "pdag_to_cpdag() (in module pywhy_graphs.algorithms)": [[38, "pywhy_graphs.algorithms.pdag_to_cpdag"]], "pdag_to_dag() (in module pywhy_graphs.algorithms)": [[39, "pywhy_graphs.algorithms.pdag_to_dag"]], "pds() (in module pywhy_graphs.algorithms)": [[40, "pywhy_graphs.algorithms.pds"]], "pds_path() (in module pywhy_graphs.algorithms)": [[41, "pywhy_graphs.algorithms.pds_path"]], "pds_t() (in module pywhy_graphs.algorithms)": [[42, "pywhy_graphs.algorithms.pds_t"]], "pds_t_path() (in module pywhy_graphs.algorithms)": [[43, "pywhy_graphs.algorithms.pds_t_path"]], "possible_ancestors() (in module pywhy_graphs.algorithms)": [[44, "pywhy_graphs.algorithms.possible_ancestors"]], "possible_descendants() (in module pywhy_graphs.algorithms)": [[45, "pywhy_graphs.algorithms.possible_descendants"]], "all_semi_directed_paths() (in module pywhy_graphs.algorithms.semi_directed_paths)": [[46, "pywhy_graphs.algorithms.semi_directed_paths.all_semi_directed_paths"]], "is_semi_directed_path() (in module pywhy_graphs.algorithms.semi_directed_paths)": [[47, "pywhy_graphs.algorithms.semi_directed_paths.is_semi_directed_path"]], "uncovered_pd_path() (in module pywhy_graphs.algorithms)": [[48, "pywhy_graphs.algorithms.uncovered_pd_path"]], "valid_mag() (in module pywhy_graphs.algorithms)": [[49, "pywhy_graphs.algorithms.valid_mag"]], "valid_pag() (in module pywhy_graphs.algorithms)": [[50, "pywhy_graphs.algorithms.valid_pag"]], "stationarytimeseriescpdag (class in pywhy_graphs.classes.timeseries)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG"]], "add_edge() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.add_edge"]], "add_edges_from() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.add_edges_from"]], "directed_edge_name (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag property)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.directed_edge_name"]], "directed_edges (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag property)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.directed_edges"]], "orient_uncertain_edge() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.orient_uncertain_edge"]], "possible_children() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.possible_children"]], "possible_parents() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.possible_parents"]], "sub_directed_graph() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.sub_directed_graph"]], "sub_undirected_graph() (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag method)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.sub_undirected_graph"]], "undirected_edge_name (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag property)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.undirected_edge_name"]], "undirected_edges (pywhy_graphs.classes.timeseries.stationarytimeseriescpdag property)": [[51, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesCPDAG.undirected_edges"]], "stationarytimeseriesdigraph (class in pywhy_graphs.classes.timeseries)": [[52, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesDiGraph"]], "stationarytimeseriesgraph (class in pywhy_graphs.classes.timeseries)": [[53, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesGraph"]], "stationarytimeseriesmixededgegraph (class in pywhy_graphs.classes.timeseries)": [[54, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesMixedEdgeGraph"]], "stationarytimeseriespag (class in pywhy_graphs.classes.timeseries)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG"]], "bidirected_edge_name (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.bidirected_edge_name"]], "bidirected_edges (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.bidirected_edges"]], "circle_edge_name (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.circle_edge_name"]], "circle_edges (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.circle_edges"]], "directed_edge_name (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.directed_edge_name"]], "directed_edges (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.directed_edges"]], "orient_uncertain_edge() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.orient_uncertain_edge"]], "possible_children() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.possible_children"]], "possible_parents() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.possible_parents"]], "sub_bidirected_graph() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.sub_bidirected_graph"]], "sub_circle_graph() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.sub_circle_graph"]], "sub_directed_graph() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.sub_directed_graph"]], "sub_undirected_graph() (pywhy_graphs.classes.timeseries.stationarytimeseriespag method)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.sub_undirected_graph"]], "undirected_edge_name (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.undirected_edge_name"]], "undirected_edges (pywhy_graphs.classes.timeseries.stationarytimeseriespag property)": [[55, "pywhy_graphs.classes.timeseries.StationaryTimeSeriesPAG.undirected_edges"]], "timeseriesdigraph (class in pywhy_graphs.classes.timeseries)": [[56, "pywhy_graphs.classes.timeseries.TimeSeriesDiGraph"]], "timeseriesgraph (class in pywhy_graphs.classes.timeseries)": [[57, "pywhy_graphs.classes.timeseries.TimeSeriesGraph"]], "timeseriesmixededgegraph (class in pywhy_graphs.classes.timeseries)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph"]], "add_edge() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.add_edge"]], "add_edges_from() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.add_edges_from"]], "add_homologous_edges() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.add_homologous_edges"]], "copy() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.copy"]], "node_attr_dict_factory (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph attribute)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.node_attr_dict_factory"]], "node_dict_factory (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph attribute)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.node_dict_factory"]], "remove_edge() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.remove_edge"]], "remove_edges_from() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.remove_edges_from"]], "remove_homologous_edges() (pywhy_graphs.classes.timeseries.timeseriesmixededgegraph method)": [[58, "pywhy_graphs.classes.timeseries.TimeSeriesMixedEdgeGraph.remove_homologous_edges"]], "complete_ts_graph() (in module pywhy_graphs.classes.timeseries)": [[59, "pywhy_graphs.classes.timeseries.complete_ts_graph"]], "empty_ts_graph() (in module pywhy_graphs.classes.timeseries)": [[60, "pywhy_graphs.classes.timeseries.empty_ts_graph"]], "get_summary_graph() (in module pywhy_graphs.classes.timeseries)": [[61, "pywhy_graphs.classes.timeseries.get_summary_graph"]], "has_homologous_edges() (in module pywhy_graphs.classes.timeseries)": [[62, "pywhy_graphs.classes.timeseries.has_homologous_edges"]], "nodes_in_time_order() (in module pywhy_graphs.classes.timeseries)": [[63, "pywhy_graphs.classes.timeseries.nodes_in_time_order"]], "clearn_to_graph() (in module pywhy_graphs.export)": [[64, "pywhy_graphs.export.clearn_to_graph"]], "graph_to_clearn() (in module pywhy_graphs.export)": [[65, "pywhy_graphs.export.graph_to_clearn"]], "graph_to_numpy() (in module pywhy_graphs.export)": [[66, "pywhy_graphs.export.graph_to_numpy"]], "graph_to_pcalg() (in module pywhy_graphs.export)": [[67, "pywhy_graphs.export.graph_to_pcalg"]], "graph_to_tetrad() (in module pywhy_graphs.export)": [[68, "pywhy_graphs.export.graph_to_tetrad"]], "numpy_to_graph() (in module pywhy_graphs.export)": [[69, "pywhy_graphs.export.numpy_to_graph"]], "pcalg_to_graph() (in module pywhy_graphs.export)": [[70, "pywhy_graphs.export.pcalg_to_graph"]], "tetrad_to_graph() (in module pywhy_graphs.export)": [[71, "pywhy_graphs.export.tetrad_to_graph"]], "apply_linear_soft_intervention() (in module pywhy_graphs.functional)": [[72, "pywhy_graphs.functional.apply_linear_soft_intervention"]], "add_cpd_for_node() (in module pywhy_graphs.functional.discrete)": [[73, "pywhy_graphs.functional.discrete.add_cpd_for_node"]], "make_random_discrete_graph() (in module pywhy_graphs.functional.discrete)": [[74, "pywhy_graphs.functional.discrete.make_random_discrete_graph"]], "make_graph_linear_gaussian() (in module pywhy_graphs.functional)": [[75, "pywhy_graphs.functional.make_graph_linear_gaussian"]], "make_graph_multidomain() (in module pywhy_graphs.functional)": [[76, "pywhy_graphs.functional.make_graph_multidomain"]], "set_node_attributes_with_g() (in module pywhy_graphs.functional)": [[77, "pywhy_graphs.functional.set_node_attributes_with_G"]], "mixededgegraph (class in pywhy_graphs.networkx)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph"]], "__contains__() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.__contains__"]], "__getitem__() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.__getitem__"]], "__iter__() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.__iter__"]], "__len__() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.__len__"]], "add_edge() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.add_edge"]], "add_edges_from() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.add_edges_from"]], "adj (pywhy_graphs.networkx.mixededgegraph property)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.adj"]], "clear_edge_types() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.clear_edge_types"]], "copy() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.copy"]], "degree() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.degree"]], "edges() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.edges"]], "get_edge_data() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.get_edge_data"]], "get_graphs() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.get_graphs"]], "graph_attr_dict_factory (pywhy_graphs.networkx.mixededgegraph attribute)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.graph_attr_dict_factory"]], "has_edge() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.has_edge"]], "has_node() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.has_node"]], "is_directed() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.is_directed"]], "is_multigraph() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.is_multigraph"]], "name (pywhy_graphs.networkx.mixededgegraph property)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.name"]], "nbunch_iter() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.nbunch_iter"]], "node_attr_dict_factory (pywhy_graphs.networkx.mixededgegraph attribute)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.node_attr_dict_factory"]], "node_dict_factory (pywhy_graphs.networkx.mixededgegraph attribute)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.node_dict_factory"]], "number_of_edge_types() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.number_of_edge_types"]], "number_of_edges() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.number_of_edges"]], "number_of_nodes() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.number_of_nodes"]], "order() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.order"]], "remove_edge() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.remove_edge"]], "remove_edges_from() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.remove_edges_from"]], "size() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.size"]], "subgraph() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.subgraph"]], "to_directed() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.to_directed"]], "to_undirected() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.to_undirected"]], "update() (pywhy_graphs.networkx.mixededgegraph method)": [[78, "pywhy_graphs.networkx.MixedEdgeGraph.update"]], "bidirected_to_unobserved_confounder() (in module pywhy_graphs.networkx)": [[79, "pywhy_graphs.networkx.bidirected_to_unobserved_confounder"]], "is_minimal_m_separator() (in module pywhy_graphs.networkx)": [[80, "pywhy_graphs.networkx.is_minimal_m_separator"]], "m_separated() (in module pywhy_graphs.networkx)": [[81, "pywhy_graphs.networkx.m_separated"]], "minimal_m_separator() (in module pywhy_graphs.networkx)": [[82, "pywhy_graphs.networkx.minimal_m_separator"]], "simulate_data_from_var() (in module pywhy_graphs.simulate)": [[83, "pywhy_graphs.simulate.simulate_data_from_var"]], "simulate_linear_var_process() (in module pywhy_graphs.simulate)": [[84, "pywhy_graphs.simulate.simulate_linear_var_process"]], "simulate_var_process_from_summary_graph() (in module pywhy_graphs.simulate)": [[85, "pywhy_graphs.simulate.simulate_var_process_from_summary_graph"]], "sys_info() (in module pywhy_graphs)": [[86, "pywhy_graphs.sys_info"]], "draw() (in module pywhy_graphs.viz)": [[87, "pywhy_graphs.viz.draw"]], "timeseries_layout() (in module pywhy_graphs.viz)": [[88, "pywhy_graphs.viz.timeseries_layout"]], "1d": [[89, "term-1d"]], "1d array": [[89, "term-1d-array"]], "2d": [[89, "term-2d"]], "2d array": [[89, "term-2d-array"]], "api": [[89, "term-API"]], "f-node": [[89, "term-F-node"]], "markov equivalence class": [[89, "term-Markov-equivalence-class"]], "scm": [[89, "term-SCM"]], "structural causal model": [[89, "term-Structural-Causal-Model"]], "c components": [[89, "term-0"]], "c-components": [[89, "term-c-components"]], "c_components": [[89, "term-c_components"]], "callable": [[89, "term-callable"]], "docstring": [[89, "term-docstring"]], "equivalence class": [[89, "term-equivalence-class"]], "examples": [[89, "term-examples"]], "experimental": [[89, "term-experimental"]], "gallery": [[89, "term-gallery"]], "joblib": [[89, "term-joblib"]], "lag": [[89, "term-lag"]], "n_features": [[89, "term-n_features"]], "n_samples": [[89, "term-n_samples"]], "node": [[89, "term-node"]], "np": [[89, "term-np"]], "nx": [[89, "term-nx"]], "pair": [[89, "term-pair"]], "pd": [[89, "term-pd"]], "sample": [[89, "term-sample"]], "samples": [[89, "term-samples"]], "sigma_map": [[89, "term-sigma_map"]], "symmetric_difference_map": [[89, "term-symmetric_difference_map"]], "tsnode": [[89, "term-tsnode"]], "variable": [[89, "term-variable"]], "pywhy_graphs.algorithms": [[92, "module-pywhy_graphs.algorithms"]], "pywhy_graphs.algorithms.semi_directed_paths": [[92, "module-pywhy_graphs.algorithms.semi_directed_paths"]], "pywhy_graphs.classes": [[93, "module-pywhy_graphs.classes"]], "pywhy_graphs.classes.timeseries": [[93, "module-pywhy_graphs.classes.timeseries"]], "pywhy_graphs.export": [[94, "module-pywhy_graphs.export"]], "pywhy_graphs.functional": [[95, "module-pywhy_graphs.functional"]], "pywhy_graphs.simulate": [[96, "module-pywhy_graphs.simulate"]]}})
\ No newline at end of file
diff --git a/dev/sg_execution_times.html b/dev/sg_execution_times.html
index dca7ae20d..f9732b63c 100644
--- a/dev/sg_execution_times.html
+++ b/dev/sg_execution_times.html
@@ -429,7 +429,7 @@
                   
   <section id="computation-times">
 <span id="sphx-glr-sg-execution-times"></span><h1>Computation times<a class="headerlink" href="#computation-times" title="Link to this heading">#</a></h1>
-<p><strong>00:06.532</strong> total execution time for 6 files <strong>from all galleries</strong>:</p>
+<p><strong>00:07.479</strong> total execution time for 6 files <strong>from all galleries</strong>:</p>
 <div class="docutils container">
 <style scoped>
 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet" />
@@ -451,28 +451,28 @@
 </thead>
 <tbody>
 <tr class="row-even"><td><p><a class="reference internal" href="auto_examples/intro/intro_causal_graphs.html#sphx-glr-auto-examples-intro-intro-causal-graphs-py"><span class="std std-ref">An introduction to causal graphs and how to use them</span></a> (<code class="docutils literal notranslate"><span class="pre">../examples/intro/intro_causal_graphs.py</span></code>)</p></td>
-<td><p>00:02.086</p></td>
-<td><p>249.6</p></td>
+<td><p>00:02.335</p></td>
+<td><p>248.3</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="auto_examples/mixededge/plot_mixed_edge_graph.html#sphx-glr-auto-examples-mixededge-plot-mixed-edge-graph-py"><span class="std std-ref">MixedEdgeGraph - Graph with different types of edges</span></a> (<code class="docutils literal notranslate"><span class="pre">../examples/mixededge/plot_mixed_edge_graph.py</span></code>)</p></td>
-<td><p>00:01.187</p></td>
-<td><p>170.5</p></td>
+<td><p>00:01.385</p></td>
+<td><p>170.2</p></td>
 </tr>
-<tr class="row-even"><td><p><a class="reference internal" href="auto_examples/intro/checking_validity_of_a_pag.html#sphx-glr-auto-examples-intro-checking-validity-of-a-pag-py"><span class="std std-ref">On PAGs and their validity</span></a> (<code class="docutils literal notranslate"><span class="pre">../examples/intro/checking_validity_of_a_pag.py</span></code>)</p></td>
-<td><p>00:00.969</p></td>
-<td><p>166.3</p></td>
+<tr class="row-even"><td><p><a class="reference internal" href="auto_examples/intro/inducing_path.html#sphx-glr-auto-examples-intro-inducing-path-py"><span class="std std-ref">An introduction to Inducing Paths and how to find them</span></a> (<code class="docutils literal notranslate"><span class="pre">../examples/intro/inducing_path.py</span></code>)</p></td>
+<td><p>00:01.159</p></td>
+<td><p>164.0</p></td>
 </tr>
-<tr class="row-odd"><td><p><a class="reference internal" href="auto_examples/intro/inducing_path.html#sphx-glr-auto-examples-intro-inducing-path-py"><span class="std std-ref">An introduction to Inducing Paths and how to find them</span></a> (<code class="docutils literal notranslate"><span class="pre">../examples/intro/inducing_path.py</span></code>)</p></td>
-<td><p>00:00.949</p></td>
-<td><p>164.6</p></td>
+<tr class="row-odd"><td><p><a class="reference internal" href="auto_examples/intro/checking_validity_of_a_pag.html#sphx-glr-auto-examples-intro-checking-validity-of-a-pag-py"><span class="std std-ref">On PAGs and their validity</span></a> (<code class="docutils literal notranslate"><span class="pre">../examples/intro/checking_validity_of_a_pag.py</span></code>)</p></td>
+<td><p>00:01.096</p></td>
+<td><p>165.7</p></td>
 </tr>
 <tr class="row-even"><td><p><a class="reference internal" href="auto_examples/visualization/plot_timeseries_graphs.html#sphx-glr-auto-examples-visualization-plot-timeseries-graphs-py"><span class="std std-ref">Drawing timeseries graphs and setting their layout</span></a> (<code class="docutils literal notranslate"><span class="pre">../examples/visualization/plot_timeseries_graphs.py</span></code>)</p></td>
-<td><p>00:00.926</p></td>
-<td><p>164.6</p></td>
+<td><p>00:01.067</p></td>
+<td><p>164.0</p></td>
 </tr>
 <tr class="row-odd"><td><p><a class="reference internal" href="auto_examples/visualization/draw_and_compare_graphs_with_same_layout.html#sphx-glr-auto-examples-visualization-draw-and-compare-graphs-with-same-layout-py"><span class="std std-ref">Drawing graphs and setting their layout for visual comparison</span></a> (<code class="docutils literal notranslate"><span class="pre">../examples/visualization/draw_and_compare_graphs_with_same_layout.py</span></code>)</p></td>
-<td><p>00:00.415</p></td>
-<td><p>164.6</p></td>
+<td><p>00:00.438</p></td>
+<td><p>164.0</p></td>
 </tr>
 </tbody>
 </table>