Package edu.cmu.tetrad.graph
Class Paths
java.lang.Object
edu.cmu.tetrad.graph.Paths
- All Implemented Interfaces:
TetradSerializable
,Serializable
Paths class.
- Version:
- $Id: $Id
- Author:
- josephramsey
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
An algorithm to find all cliques in a graph. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionallDirectedPathsFromTo
(Node node1, Node node2, int maxLength) allDirectedPathsFromTo.allPathsFromTo
(Node node1, Node node2, int maxLength) allPathsFromTo.Returns a list of connected components in the graph.boolean
definiteNonDescendent
(Node node1, Node node2) added by ekorber, 2004/06/12boolean
defVisible
(Edge edge) added by ekorber, 2004/06/11directedPathsFromTo
(Node node1, Node node2, int maxLength) Finds all directed paths from node1 to node2 with a maximum length.boolean
existsDirectedCycle.boolean
existsDirectedPathFromTo
(Node node1, Node node2) existsDirectedPathFromTo.boolean
existsDirectedPathFromTo
(Node node1, Node node2, int depth) existsDirectedPathFromTo.boolean
existsInducingPath
(Node x, Node y) Determines whether an inducing path exists between node1 and node2, given a set O of observed nodes and a set sem of conditioned nodes.boolean
existsInducingPathVisit
(Node a, Node b, Node x, Node y, LinkedList<Node> path) existsInducingPathVisit.boolean
existsSemiDirectedPath
(Node from, Node to) existsSemiDirectedPath.boolean
existsSemiDirectedPath
(Node node1, Set<Node> nodes) existsSemiDirectedPath.boolean
existsTrek
(Node node1, Node node2) Determines whether a trek exists between two nodes in the graph.Return a map from each node to its ancestors.getAncestors
(List<Node> nodes) getAncestors.getDescendants
(List<Node> nodes) getDescendants.getInducingPath
(Node x, Node y) getInducingPath.getMConnectedVars
(Node y, Set<Node> z) getMConnectedVars.getMConnectedVars.getSepset.getValidOrder
(List<Node> initialOrder, boolean forward) Returns a valid causal order for either a DAG or a CPDAG.boolean
isAncestorOf
(Node node1, Node node2) Determines whether one node is an ancestor of another.boolean
isDescendentOf
(Node node1, Node node2) Determines whether one node is a descendent of another.boolean
isDirectedFromTo
(Node node1, Node node2) isDirectedFromTo.boolean
Checks if the current graph is a legal CPDAG (completed partially directed acyclic graph).boolean
isMConnectedTo
(Node x, Node y, Set<Node> z) Detemrmines whether x and y are d-connected given z.boolean
Detemrmines whether x and y are d-connected given z.boolean
isMConnectedTo.boolean
Checks to see if x and y are d-connected given z.boolean
isMSeparatedFrom
(Node node1, Node node2, Set<Node> z) Determines whether one n ode is d-separated from another.boolean
isMSeparatedFrom.boolean
Check to see if a set of variables Z satisfies the back-door criterion relative to node x and node y.boolean
isUndirectedFromTo
(Node node1, Node node2) isUndirectedFromTo.void
makeValidOrder
(List<Node> order) Reorders the given order into a valid causal order for either a DAG or a CPDAG.Returns a set of all maximum cliques in the graph.boolean
possibleAncestor
(Node node1, Node node2) possibleAncestor.possibleMsep
(Node x, Node y, int maxPathLength) possibleMsep.void
removeByPossibleMsep
(IndependenceTest test, SepsetMap sepsets) Remove edges by the possible m-separation rule.semidirectedPathsFromTo
(Node node1, Node node2, int maxLength) semidirectedPathsFromTo.Finds all treks from node1 to node2 with a maximum length.treksIncludingBidirected
(Node node1, Node node2) Finds all possible treks between two nodes, including bidirectional treks.
-
Constructor Details
-
Paths
Constructor for Paths.
- Parameters:
graph
- aGraph
object
-
-
Method Details
-
getValidOrder
Returns a valid causal order for either a DAG or a CPDAG. (bryanandrews)- Parameters:
initialOrder
- Variables in the order will be kept as close to this initial order as possible, either the forward order or the reverse order, depending on the next parameter.forward
- Whether the variables will be iterated over in forward or reverse direction.- Returns:
- The valid causal order found.
-
makeValidOrder
Reorders the given order into a valid causal order for either a DAG or a CPDAG. (bryanandrews)- Parameters:
order
- Variables in the order will be kept as close to this initial order as possible, either the forward order or the reverse order, depending on the next parameter.
-
isLegalCpdag
public boolean isLegalCpdag()Checks if the current graph is a legal CPDAG (completed partially directed acyclic graph).- Returns:
- true if the graph is a legal CPDAG, false otherwise.
-
maxCliques
Returns a set of all maximum cliques in the graph.- Returns:
- a set of sets of nodes representing the maximum cliques in the graph
-
connectedComponents
Returns a list of connected components in the graph.- Returns:
- A list of connected components, where each component is represented as a list of nodes.
-
directedPathsFromTo
Finds all directed paths from node1 to node2 with a maximum length.- Parameters:
node1
- the starting nodenode2
- the destination nodemaxLength
- the maximum length of the paths- Returns:
- a list of lists containing the directed paths from node1 to node2
-
semidirectedPathsFromTo
semidirectedPathsFromTo.
-
allPathsFromTo
allPathsFromTo.
-
allDirectedPathsFromTo
allDirectedPathsFromTo.
-
treks
Finds all treks from node1 to node2 with a maximum length.- Parameters:
node1
- the starting nodenode2
- the destination nodemaxLength
- the maximum length of the treks- Returns:
- a list of lists of nodes representing each trek from node1 to node2
-
treksIncludingBidirected
Finds all possible treks between two nodes, including bidirectional treks.- Parameters:
node1
- The starting node.node2
- The ending node.- Returns:
- A List of Lists representing all treks between the given nodes.
-
existsDirectedPathFromTo
existsDirectedPathFromTo.
-
existsSemiDirectedPath
existsSemiDirectedPath.
-
isMConnectedTo
isMConnectedTo.
-
isMConnectedTo
public boolean isMConnectedTo(Set<Node> x, Set<Node> y, Set<Node> z, Map<Node, Set<Node>> ancestorMap) Checks to see if x and y are d-connected given z. -
getMConnectedVars
getMConnectedVars.
-
getMConnectedVars
getMConnectedVars.
-
getAncestorMap
Return a map from each node to its ancestors.- Returns:
- This map.
-
existsInducingPath
Determines whether an inducing path exists between node1 and node2, given a set O of observed nodes and a set sem of conditioned nodes.- Parameters:
x
- the first node.y
- the second node.- Returns:
- true if an inducing path exists, false if not.
-
existsInducingPathVisit
existsInducingPathVisit.
- Parameters:
a
- aNode
objectb
- aNode
objectx
- aNode
objecty
- aNode
objectpath
- aLinkedList
object- Returns:
- a boolean
-
getInducingPath
getInducingPath.
-
possibleMsep
possibleMsep.
-
removeByPossibleMsep
Remove edges by the possible m-separation rule.- Parameters:
test
- The independence test to use to remove edges.sepsets
- A sepset map to which sepsets should be added. May be null, in which case sepsets will not be recorded.
-
isSatisfyBackDoorCriterion
Check to see if a set of variables Z satisfies the back-door criterion relative to node x and node y. -
getSepset
getSepset.
-
isMConnectedTo
Detemrmines whether x and y are d-connected given z. -
isMConnectedTo
Detemrmines whether x and y are d-connected given z. -
defVisible
added by ekorber, 2004/06/11- Parameters:
edge
- aEdge
object- Returns:
- true if the given edge is definitely visible (Jiji, pg 25)
- Throws:
IllegalArgumentException
- if the given edge is not a directed edge in the graph
-
existsDirectedCycle
public boolean existsDirectedCycle()existsDirectedCycle.
- Returns:
- a boolean
-
existsDirectedPathFromTo
existsDirectedPathFromTo.
-
existsSemiDirectedPath
existsSemiDirectedPath.
-
existsTrek
Determines whether a trek exists between two nodes in the graph. A trek exists if there is a directed path between the two nodes or else, for some third node in the graph, there is a path to each of the two nodes in question. -
getDescendants
getDescendants.
-
isAncestorOf
Determines whether one node is an ancestor of another. -
getAncestors
getAncestors.
-
isDescendentOf
Determines whether one node is a descendent of another. -
definiteNonDescendent
added by ekorber, 2004/06/12 -
isMSeparatedFrom
Determines whether one n ode is d-separated from another. According to Spirtes, Richardson and Meek, two nodes are d- connected given some conditioning set Z if there is an acyclic undirected path U between them, such that every collider on U is an ancestor of some element in Z and every non-collider on U is not in Z. Two elements are d-separated just in case they are not d-connected. A collider is a node which two edges hold in common for which the endpoints leading into the node are both arrow endpoints.- Parameters:
node1
- the first node.node2
- the second node.z
- the conditioning set.- Returns:
- true if node1 is d-separated from node2 given set t, false if not.
- See Also:
-
isMSeparatedFrom
isMSeparatedFrom.
-
isDirectedFromTo
isDirectedFromTo.
-
isUndirectedFromTo
isUndirectedFromTo.
-
possibleAncestor
possibleAncestor.
-