Skip to content

[ENH] Add the ability to check if an edge is "visible" #119

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
wants to merge 5 commits into
base: main
Choose a base branch
from

Conversation

aryan26roy
Copy link
Collaborator

Fixes #115

Changes proposed in this pull request:

  • Add a function to check if the given edges in a path are "visible"

Before submitting

  • I've read and followed all steps in the Making a pull request
    section of the CONTRIBUTING docs.
  • I've updated or added any relevant docstrings following the syntax described in the
    Writing docstrings section of the CONTRIBUTING docs.
  • If this PR fixes a bug, I've added a test that will fail without my fix.
  • If this PR adds a new feature, I've added tests that sufficiently cover my new functionality.

After submitting

  • All GitHub Actions jobs for my pull request have passed.

Signed-off-by: Aryan Roy <aryanroy5678@gmail.com>
@aryan26roy
Copy link
Collaborator Author

@adam2392 What does this sign mean?

V •→X

Does it mean that the mark at the V end can be anything or that this can be a path of arbitrary length with the last mark being an arrow pointing towards X?

@adam2392
Copy link
Collaborator

adam2392 commented Aug 27, 2024

That is answered on pg2 of https://auai.org/uai2015/proceedings/papers/155.pdf.

Lmk if you have other questions too.

@aryan26roy
Copy link
Collaborator Author

Does a function already exists to find if a collider path exists between two nodes in a graph?

@adam2392
Copy link
Collaborator

Does a function already exists to find if a collider path exists between two nodes in a graph?

I don't think so, but all_vstructures is similar, so you can modify that implementation to get a new function all_collider_paths(src, target, G).

Signed-off-by: Aryan Roy <aryanroy5678@gmail.com>
Signed-off-by: Aryan Roy <aryanroy5678@gmail.com>
@aryan26roy
Copy link
Collaborator Author

@adam2392 The paper says:

A path of length one is a trivial collider path.

Do they mean a triple? (Only counting the non-endpoint node for the length) Because I don't see how a path could be a collider path otherwise.

@adam2392
Copy link
Collaborator

adam2392 commented Oct 2, 2024

@adam2392 The paper says:

A path of length one is a trivial collider path.

Do they mean a triple? (Only counting the non-endpoint node for the length) Because I don't see how a path could be a collider path otherwise.

I think they just mean a path of length one. So a single variable path is a collider, but yeah you would really only look at the path between two points usually.

So a collider path is a sequence of variables <X_1, X_2, X_3, …, X_i>, where you just look at the edges between each consecutive triple <X_i-1, X_i, X_i+1> in that path to determine if they meet the collider condition.

Signed-off-by: Aryan Roy <aryanroy5678@gmail.com>
Signed-off-by: Aryan Roy <aryanroy5678@gmail.com>
Comment on lines +520 to +526
pag = PAG()
pag.add_edge("Y", "X", pag.directed_edge_name)
pag.add_edge("Z", "Y", pag.bidirected_edge_name)
pag.add_edge("Z", "K", pag.bidirected_edge_name)
pag.add_edge("K", "H", pag.bidirected_edge_name)

assert False == check_visibility(pag, "X", "Y")
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@adam2392 Just want to check with you, this case should be false, right?

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

FEA A function to determine if an edge is "visible"
2 participants