When we read a graph we may be given a consensus graph in which nodes can have both multiple parents and multiple children. When we convert this graph into our internal format there are several approaches we might take:
Add internal nodes until the graph is a binary network (each node other than the root has total valence three with in-degree 2 and out-degree 1 or in-degree 1 and out-degree 2).
Delete edges until the graph is valid.
When reading a graph we should start by trying to do the first approach (i.e. pick some binary tree amongst the space of consensus trees represented by the graph). We should then check that this tree is valid. If this is not valid we should then take our consensus binary network and delete network edges until it becomes temporally valid (this will happen eventually as we eventually end up with one of the display trees). Whichever tree we eventually use for the search should be logged to a file so the user can compare this against the input tree.
In the case that we begin deleting network edges we should consider asking the user for input on whether to continue the search (perhaps with some default yes option available).
When we read a graph we may be given a consensus graph in which nodes can have both multiple parents and multiple children. When we convert this graph into our internal format there are several approaches we might take:
Add internal nodes until the graph is a binary network (each node other than the root has total valence three with in-degree 2 and out-degree 1 or in-degree 1 and out-degree 2).
Delete edges until the graph is valid.
When reading a graph we should start by trying to do the first approach (i.e. pick some binary tree amongst the space of consensus trees represented by the graph). We should then check that this tree is valid. If this is not valid we should then take our consensus binary network and delete network edges until it becomes temporally valid (this will happen eventually as we eventually end up with one of the display trees). Whichever tree we eventually use for the search should be logged to a file so the user can compare this against the input tree.
In the case that we begin deleting network edges we should consider asking the user for input on whether to continue the search (perhaps with some default yes option available).